The Computer Science (ACS) curriculum offered at Embry- Riddle Aeronautical University has a two-layered architecture: a general education layer and a discipline knowledge layer. The discipline knowledge layer is further partitioned into math and science knowledge, domain knowledge (in our case it is aviation), and computer science knowledge. The computer science portion divides into fundamentals of computing, advanced computing concepts, computing application courses, culminating in the senior design project -- the capstone program course. Successful completion of the program requires a minimum of 126 credit hours. The program provides for:
The low number of open electives is justified by the program design, mandating 12 credit hours of aviation domain courses.
The general education layer is accomplished by a standard sequence of college level courses in humanities, social sciences, and economics. The math and science component consist of a standard sequence of math and physics classes as suggested by the ACM recommendation. In the Computer Science program we have the sequence of two calculus classes followed by three upper level courses covering probability and statistics, linear algebra, and differential equations. Additionally, a discrete structures course provides required fundamentals for computer science as a discipline. A sequence of engineering physics courses with a laboratory provides required background in science. It should be noted that in the Domain Centered Curriculum concept, the selection of the math/science sequence is a function of the domain. The selected courses represent the best match for the subsequent computer sequence and aviation domain requirements.
The KnowledgeThe aviation application domain is integrated into the curriculum in two ways. The first is by a sequence of Airway Science courses such as Air Traffic Control, Principles of Flight, and Meteorology that all the students are required to take. The second way is accomplished by the departmental policy of assigning problems and projects in application courses that are drawn from the aviation discipline. By making a departmental commitment to aviation as the application domain, the faculty have agreed to assign problems dealing with aviation or aerospace. Some example problems and projects are listed in later section. This approach has proven to be an excellent motivator for our students, as they are attracted to our school because of their interest in aviation. The profile of students we recruit is one who wants to be in a computing discipline but is also has a strong interest in aviation and aerospace thus wanting to exercise his/her computing skills in this field.
Computing FundamentalsThe purpose of this component is to provide the basic concepts of computer discipline in both hardware and software tracks. On the software track the computing fundamentals component consist of a sequence of two courses computer programming and software design (a roughly an equivalent of CS1 and CS2 in ACM standard). There are, however, notable differences. As the program incorporates software engineering principles accross the curriculum, we did introduce a toolbox/modular model, teaching programming in a top- down paradigm. The concepts of software lifecycle, modularity, information hiding, and using packages and subprograms are taught at very early stage of instruction. Also, we made a decision of using Ada as the primary language of instruction. The hardware track consists of a sequence of two courses covering the basics of digital design, assembly language, and computer organization. It covers also elements of microprocessor operations and simple hardware interface.
Advanced Computing ConceptsThis component provides theoretical extensions of the fundamentals of computing software and hardware. It includes courses on advanced data structures, organization of programming languages, operating systems, analysis of algorithms, software engineering process, interfacing, computer architecture, etc. The courses in this component conform to the recommendation of ACM, to accomplish the completeness of the computer science undergraduate degree. The course sequence and emphasis, however, is oriented toward the subsequent application and senior design courses. The role of advanced computing concepts sequence is to provide the teoretical background and teach the methodologies and tools for the subsequent work. Example of that are courses on organization of programming languages (which gives a review of various programming paradigms and environments), on C and UNIX (giving the students basics for another language and the most popular operating system), on software engineering (preparing for a work on a software project), etc.
Computing ApplicationsThis component is of primary imporance to the Domain Centered Curriculum. The purpose of this component is to provide the theoretical and practical aspects of implementing computer applications in the selected domain. At the same time, the courses provide theoretical material from computer science discipline as required by the ACM. The material is selected as supporting the aviation domain. In our program this component consists of courses on: Computer Graphics, Database Systems, Artificial Intelligence, Modeling and Simulation , and Real-Time Systems . All those topics are critical for the discipline of aviation. Some other courses, from the ACM palette, can be selected for other domains. Group projects of two to five students are assigned in each course and student teams develop software artifacts based both on the course material and the application domain. The topics cover graphic rendering, relational data bases, knowledge acquisition, expert systems, discrete event simulation, object-oriented methodology, concurrency, tasking, and interprocess communication. The topics were selected as they are relevant to aviation discipline and proctical in aviation applications. Various courses concentrate on various elements of the software lifecycle. Some emphasise the requirement and specification stage, some are putting emphasis on design and project management, other on implementation and testing.
Senior DesignIn addition to the above mentioned applications courses, the curriculum includes a senior design project course that concentrates on a semester-long team project involving a computer application in the aviation domain. The purpose of this component is to give each student an opportunity to participate in a formal software development cycle. This capstone course allows the students to play roles in a software development team and produce software engineering artifacts related to a project in the application domain. The students' work and the project artifacts are used to assess the entire Computer Science program.