Employers of computer science majors, however, express ... computer science curriculum,. Over the ... Senior Project courses all require students to work on a.
SOFTWARE
ENGINEERING
EMPHASIS
COURSES
James R. Aman, Ph.D. Wilmington College Wilmington, OH 45177 jaman@wilmington. edu
Massood Towhidnejad, Ph.D. Embry-Riddle Aeronautical University Oveida, FL 43000 towhidnejad@erau,
IN ADVANCED
edu
INTRODUCTION DEPARTMENTAL
In the last twenty years, the development of application software has moved beyond the capabilities of the individual programmer and is now widely viewed as an engineering activity. This view is reinforced by the advent of “software factories, ” the recent interest by government and industry in software process improvement, and the strategic importance of good engineering practice in the development of large complex computer systems. Employers of computer science majors, however, express serious concerns about recent graduates: a lack of relevant and practical
competencies;
the inability
Particularly from small colleges, graduates gain marketability by knowledge and expertise in some niche of computer science. Wilmington College has chosen to place this emphasis on software engineering. SE principles are first introduced in the CS 1 course, then expanded in other lower-division courses. An upper-level course in SE theory and a practicum (6 semester hours, total) are both required for the major. To increase exposure, all upper-level courses which in any way address system design or implementation on any scale incorporate software engineering principles and practice. The most intensive of these is Compiler Design, described below. The faculty believes this emphasis is entirely in accord with the
to work as part of
a team; and little perspective about the human, economic, and managerial issues involved in software development needs. Peter Denning [1] summarizes the problems associated with current engineering education:
recommendations 1,
of Computing
Curricula
1991
[5].
The
a curriculum capable of preparing students for the shifting world must incorporate new elements emphasizing design, demonstrated proficiency,
success of recent graduates in being hired for software engineering positions is encouraging. The curriculum of the computer science
effective interaction with others, and a greater sensitivity toward the historical and cultural spaces in which we all live and work. The time has come to experiment with new curricula that will lead this way. ”
department at ERAU is centered around the aviation and aerospace domain. One of the main objectives of the department is to provide an undergraduate curriculum that addresses the aviation and aerospace indust~ needs. To this extent, for the past five years Ada has been chosen as the official language of the department, and it is used as the language of choice in the first programming course. The
. . .
Thus, while there is a demonstrated need for trained software professionals, academia is doing little to produce graduates who are prepared to meet the needs of
techniques and practices of software engineering have been incorporated across the curriculum. For example, the
the software industry [2,3]. These requirements could not be completely addressed by the single course, Software Engineering, in the undergraduate curriculum. To address these deficiencies, the concepts, techniques, and practices of software engineering should be integrated throughout the undergraduate computer science curriculum, Over the past several years, there has been an attempt to integrate software engineering across the computer science curriculum at Embry-Riddle Aeronautical University (ERAU) [4] and at Wilmington College. This paper first briefly discusses each department’s philosophy, followed by discussions of two courses which have been heavily influenced by software engineering concepts and practices. PemrieeiOn
PHILOSOPHIES
to copy without
fee all or part of this material
students in the first programming course (CS I) will be exposed to the concept of top down design and reuse. The students in the CS I class will first be exposed to the concept of Ada packages and how they can use the existing packages in their programming. Finally, in the latter part of the CS I, the students will learn how to design and implement their own packages. To familiarize students with the fimdamentals of the aviation and aerospace domain, they are required to take between three and four courses in the above areas. Some of the more popular courses are air traffic control, meteorology and flight aerodynamics. Besides the above requirements, the department has chosen to enforce team work, term projects and presentation in the junior and senior classes. Currently. the Software Engineering, Real Time, Database, Artificial Intelligence, Simulation, and Senior Project courses all require students to work on a term project in groups of at least three. Some of the
is gtanted
provided that the copies an? not made or distributed for direct commemial advantage, the ACM mpyright notice and tbe title of the publication and its date appear, and notice is given that copying ia by permission of tfre )keoci~-on for CompuUng Machinery. To copy othenvise or to republish, mquiree a fee and/or specific permieeion. SIGCSE ’96 2/96 Philadelphia, PA USA el 996 ACM 0-89791 -757JW6KK102....60.6O
2 10
objectives of these courses are to foster team interaction and improve the student’s communication written and oral.
TokType SubType
skills, both
: DataType; : ClassType; { add’] info on token }
Link
COMPILER
: TokRecPtr; CASE boolean OF FALSE : ( Value TRUE : ( IntValue
DESIGN COURSE
The compiler course at Wilmington College has undergone considerable transformation in the past 6 years. Today, a full set of declarations and a package of support procedures in Turbo Pascal unit form are distributed for all programming exercises. The full contents of the packages are revealed in increments, as required at each stage of the scanner project. The lexical analyzer assignment has undergone the most significant changes.
{ binary form of integer token} END: The software engineering influence in these graduated programming assignments is clearly evident. A key axiom of software engineering is to deliver a correct product on time and in budget. Working to specific, short, absolute deadlines, students are required to code to specific
Scanner creation is handled in three distinct, cumulative phases. First, simple isolation of tokens using whitespace and end-of-line markers as the delimiters, and ignoring token type is done. Second, tokens are identified identljier or (optionally) signed by type as delimiter, Finally, additional differentiation is required integer. between delimiters and operators, between identifiers and reserved words, and in recognition of character strings. All products are submitted as units. A test shell is provided
requirements with specific deadlines. (Nothing can practically be done about budgetary considerations.) The parsing project further emphasizes the importance of adhering to the axiom. Near midterm a single scanner is made available in unit form. The source of the scanner is unknown to the students, further emphasizing the nature of sof~areengineered products in which code segments must interface cleanly and blindly. Students know only that the scan unit will return a pointer to information about the next token from the input stream. The fourth assignment is syntactic and semantic
for exercising the first two
scanners. Scanner code is written as a separate file with a specified name which the test shell “includes” at runtime. In the third assignment tokens are returned in a disjunct record rather than already being enqueued. This scanner is submitted as a unit and requires a different form of test shell. This modification made a number of scanners available for the parsing project. At each stage of scanner development, additional contents of the CompDecs and CompProc units relevant to
analysis for a recursive descent parser. Students have the full contents of the declaration and support-procedures unit interfaces now, They also have the scanner unit and a test bed. Given software requirements and specifications and the grammar of the language, students have a specific deadline for producing a correctly functioning parser. The remainder of the semester is spent on production of
the task at hand are revealed. For example, in Assignment #1 students know this type definition for a token record:
intermediate
Value : string[15]; Link : TokRecPtr END;
Link
The design
assignment sheets/design specs, are available from the instructor (Aman). Several things have come out of class evaluations and discussions. Students iike the modular approach. They appreciate the detail in the assignment sheets and the stability of the support software. Even those who did not complete all five projects say the course is helpful in reinforcing the “do it right, on time, in budget” attitude. Finally, students see the software engineering implications of the assignments.
{ token in string form } { ptr to next record }
#2, they are told about an additional
TokRec = RECORD Value TokType
code in the form of quadruples.
specs for parser are included as an appendix to this paper. Copies of the entire course syllabus, including the
TokRec = RECORD
For Assignment in TokRec:
: Str15); : Iongint)
: string[l 5]; : DataType;
field
{ apparent token type }
ARTIFICIAL
: TokRecPtr
INTELLIGENCE
COURSE
END; In Assignment #3, when they would need to store even more information about each token, the whole definition opened:
There are several approaches to teaching an Artificial Intelligence (AI) course in an undergraduate curriculum. Some schools offer a course that addresses the breadth of the AI, some will concentrate on the depth, and some are in between the two extremes. At ERAU, the depth approach is used. The main scope of this course is to
is
TokRec = RECORD 911
provide an in-depth knowledge associated with knowledgeengineering and knowledge-based development. As previously discussed, this is a project-oriented class where the students will work in groups of three or more during the course of the semester in order to develop a knowledgebased system in the aviation domain. In a typical semester, 20 to 30 junior and senior students are registered for this class. The majority
of these students have already
class is modeled on a large software development company, where there is a software division manager (the instructor), a number of proj ect managers (team leaders), and software developers (the remaining students). During the first three weeks of the semester, students will get familiar with the basic definition of artificial intelligence and its different areas of concentration. They also get a very brief description of application
systems and several samples of its
to different
domains.
In the mean time, students
are instructed to start looking for outside customers with some need for the development of an AI project. At the completion of the three weeks, one class period is dedicated to discuss the project. At this time, each student is required to provide, in an informal format, one possible team project for the semester, where the instructor will either reject or tentatively approve each project. This open discussion of the possible project will allow the student to get familiar with each other’s interests, and some of the more exciting projects that are suggested.
In the following
the instructor provides the list of tentatively
specific project until the prototype presentation period, that is during the eleventh and/or twelfth week of the semester. However, each team is required to meet at least twice with the division
completed the software engineering class, so they are somewhat familiar with its concepts and practices. The
knowledge-based
rejected and the students have been asked to think about a new project. This is credited to the open discussion that takes place between the students and the instructor before the formal submission of their proposal. There will be no more in-class discussions of the
class period, approved
manager (instructor),
outside of the class
environment, and provide an update into the state of the project. For the remainder of the semester (nine weeks), the instructor lectures on the theoretical aspects of the knowledge-engineering and knowledge-based systems. Some of the topics to be discussed are: knowledge-based system architecture and life cycle, requirement specification and design of knowledge-based systems, knowledge acquisition and system implementation, logic and automated reasoning, uncertainty management, validation and verification ofknowledge-based systems, etc. During the prototype presentations, each team’s prototype will be formally reviewed by the division manager and other team members (and in some cases the customer), and they will answer questions and collect comments and recommendations. Each team will spend the next two weeks to complete their implementation, validation and verification, and documentation. Finally, the final project will be formally presented to the division manager, customer(s), team members, other faculty from the department of outside of the department. Thirty-five percent of the student grade in the AI course, is dedicated to the project; the remainder
projects, with the name of the student who has suggested them, and instruct the students to start forming their teams and submit a formal proposal in ten days for the final approval of the project. In a typical semester, there are a total of 15 to 18 tentative projects and 6 to 10 teams. During the following weekly lectures, students will get familiar with the process of feasibility study for the development of a knowledge-based system. The written proposal submitted by each team should address the following areas: Team project, Team members, Team
of their
grade is based on their exams, quizzes and homework. Eighty-five percent of the project grade is based on the team performance, where the remaining fifteen percent is based on their individual performance. The team performance portion of the grade is based on each team’s documentation (proposal, and final documentation),
Expert/Customer, Domain background/instruction, Feasibility study/evaluation and Tentative schedule. Two days after the submission of their proposal, students are required to officially present their proposal in ffont of the class. Sometimes the customer attends this session and provides valuable feedback. This will allow the customer and the development team to classifj any misunderstanding early on the project. By this time, the majority of proposals will be approved and students are told to start working on the project. The projects that are not approved will fall mto two categories: the projects that need minor modifications to be approved, or the projects that will not be approved. In either case, the teams have until the following week to resubmit their new proposal. In the past five years, only four projects have been completely Zlz
presentations (proposal, prototype, and final product), and the official validation of customer. The individual performance of each team member is based on the division manager subjective evaluation, team member’s peer evaluation of other team members, and the self evaluation of each member.
CONCLUSION Computer science courses seem always in a state of evolution which emulates the field as a whole. At Embry-Riddle and Wilmington College, upper-division courses have become platforms for learning software engineering by doing software engineering. The artificial intelligence and compiler design courses have become excellent vehicles for reinforcing software engineering.
3. The following
REFERENCES [1] Denning, P.J. engineer.
(December,
1992). Educating anew
Communications
of the ACM,
declarations
COMPPROC:
35(12),80-
97.
{n. b., descriptions
are not included
[2] Ford, G. (1990). sofiiare
S. E. I.report
engineering
Pittsburgh,
PA:
on undergraduate
education
(CMU/SE1-90-TR-3).
Software Engineering
Institute.
[3] Ford, G., and Gibbs, N. (September 22, 1989). A master of software engineering
curriculum.
are accessible in
COMPDECS: {n. b., this section contains CONST, TYPE, and VAR declarations.} 4. The following declarations are accessible in
IEEE
Computer.
of the procedures
in this listing)
PROCEDURE PROCEDURE PROCEDURE PROCEDURE
ErrorMsg( ErrCode : integer); Header( VersionNum : Str9); Display( Ptr : TRPtr); DumpSymTable( STable : STRec);
PROCEDURE PROCEDURE
Continue( Status : integer); StoreToken(VAR TokPtr: TRPtr);
PROCEDURE
InitSourceFile(VAR
Source : text;
VAR OK: boolean);
[4] Hilbum, 1995).
T., Hirmanpour, The integration
I., and Kornecki, of sof~are
A. (March,
engineering
Paper presented computer science curriculum. Eighth Conference on Software Engineering Education, New Orleans, LA.
[5] Tucker, A. B., et al. (1991). 1991:
Report
task force.
Computing
of the ACA41EEE-CSJomt
New
York:
Association
V. GRAMMAR: BNF
into
at the
V.
curricula curriculum
for Computing
I.
is given
here in
First line of this file is to be the
name of the source code file. The file is opened by the shell, and the first line (containing the source filename) is stored before the parser is ever invoked. The production history is the sequence in which derivations were applied to the parse process. The production number (see following section) is stored. 4. Submit the parser (UNIT PARSER) for grading.
#4 -- RECURSIVE
ASSIGNMENT: A parser for the grammar given below is to be written as fiIT PARSER. The pa~ser handles syntax and semantic analysis. Syntax analysis verifies
Filename must be PARSER.PRC.
the grammatical correctness of the source, given a target grammar. Semantic analysis verifies such
VI.
attributes as type compatibility in assignment statements and parameter lists. II. INPUT: FILE OF TEXT (supposed to be a string in the language described by the grammar below). The file is specified interactively. HI. GIVEN: 1. A scanner (LEX.TPU), units containing global declarations (COMPDECS.TPU) and procedures (COMPPROC.TPU), and a shell (PSHELLXX.PAS, where xx is the version number) are provided.
grammar
RETURN: 1. Leflmost derivation of the string as far as the parse got. 2. Echo print with accompanying error messages any input line containing an error. 3. Production history in separate file called PRODHIST.DTA.
Machinery.
APPENDIX: ASSIGNMENT DESCENT PARSER
{n. b,, the full
notation)
The
shell may not be altered. 2. LEX.TPU contains a lexical analysis module. This unit is the only lexical analysis procedure to be used. PROCEDURE SCAN takes as its single argument a VAR parameter of type TokRecPtr, consistent with work already done during the study of lexical analysis. PROCEDURE STORETOKEN, provided with the units in III. 1, above, must be explicitly called by the parser to place an identifier into the symbol table. The single argument is a VAR parameter of type TokRecPtr; the symbol table is globally accessible. 213
DEADLINE:
..........