software engineering emphasis in advanced courses introduction ...

3 downloads 150428 Views 424KB Size Report
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:

..........