Software Courses in Computer Engineering
Author(s) -
Dick Blandford,
Christopher C Miller
Publication year - 2018
Language(s) - English
Resource type - Conference proceedings
DOI - 10.18260/1-2--28831
Subject(s) - software engineering , computer science , curriculum , accreditation , software , software engineering process group , process (computing) , software requirements , software development , engineering management , software design , software construction , engineering , programming language , medical education , medicine , psychology , pedagogy
There are approximately 250 ABET1 accredited computer engineering programs in the U.S. Most of these were developed as a specialty out of existing electrical engineering programs. Some developed from computer science programs and some developed as a combination of computer science and electrical engineering in one department. As a result there is some significant variance between the amount of hardware and software that computer engineering programs require. For this paper we examined forty randomly selected programs in computer engineering and attempted to determine the distribution of required software courses. We have categorized software-related courses and summarized the program requirements with respect to these categories. Every program has a published online curriculum as well as catalog descriptions of the courses. Most of our analysis comes from that data. In several cases where the software content of a course was not clear from a catalog, we contacted the department chair by email or phone. We compared our results with the data from the version of the Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering published by the Joint Task Group on Computer Engineering Curricula Version 2015 October 3. We provide a summary statement but we make no recommendations. We believe this information will be useful to anyone developing a new computer engineering program or to those who are in the process of curricular revision. Introduction The ABET website currently lists 250 accredited programs with "computer engineering" in their title. Most of these programs grew out of established electrical engineering programs but many came from elsewhere including a few which were established independent of an accredited electrical engineering program. Titles for these programs have some variation including: "computer engineering", "electrical and computer engineering", "computer science and engineering", "electrical engineering – computer engineering concentration", "computer engineering option in electrical engineering", "computer systems engineering", and some combination degrees that marry computer engineering to other engineering or computer science areas. These variations in program names are meant to imply a slightly different emphasis in course requirement content but all share the same ABET accreditation process for computer engineering. By far the most common name for the degree is "computer engineering" (204 programs) followed by "electrical and computer engineering" (22 programs). For this paper we have limited ourselves to the examination of these 226 programs. Computer engineering is by its nature a combination degree that straddles both electrical engineering and computer science. While a typical computer science program has some hardware content from computer organization and architecture classes, and the typical electrical engineering program has some software content from microcontroller classes, neither has enough of the other to allow a graduate, for example, to design an engine controller for an automobile. Such a task requires a detailed knowledge of both computer science and electrical engineering. Most computer engineering undergraduates take courses that are exclusively hardware, exclusively software, and some combination of the two. Our interest in this paper is in the required courses which are exclusively software courses that are given by ABET accredited computer engineering programs in the United States. Methodology Almost all of our data for this study was gathered from data presented online by each program. Indeed, every program in computer engineering has online resources that includes a list of required courses, a paragraph or two describing each course, and a typical degree plan that presents the usual ordering of the courses in the student's plan of study. In most cases, it is evident as to which category a course falls into: hardware, software, hardware/software, or something else (systems, mathematics...). In those cases, where it was not clear which category the course fell into, we attempted to find the course syllabus or, in a few cases, we sent email to the department chair seeking further information. As to the number of programs examined, we initially believed that a random sample of fifty programs would be adequate. After tallying the data for the first twenty programs a pattern emerged and this pattern changed little after forty programs so we stopped there. The common software courses that we sought included the following: 1. Introductory course in programming. This is typically a first course in a high level language. We call this CS Fundamentals I. 2. Introductory course on programming and data structures. This course may introduce a second high level language and typically focuses on data structures and some algorithms. We call this CS Fundamentals II. 3. Object-oriented courses. About a third of the programs had a separate course in objectoriented programming. Many of those that did not have such a course had at least an introduction to OOP in the first two courses. 4. Algorithms. This course is sometimes taught as primarily a mathematics course and some programs teach it with very little programming. We nevertheless classified it as software because of its intimate connection to the software design process and because it is usually taught by computer science faculty. Roughly half of the programs had a separate course on algorithms. 5. Programming languages. This course does a comparative analysis of a variety of highlevel programming languages with regard to programming constructs, memory requirements, operational semantics, etc. It typically has a strong software component. Only about one program in ten had a course on programming languages. 6. Computer organization and architecture. Strictly speaking, some may not call this a software course but it does typically include microprogramming, benchmarking, operating system mechanics, and assembly language structure. Since it is usually taught by computer science faculty and is a mainstay of most computer science programs, we called it a software class. Nearly every program had a required course on computer organization and/or architecture, and many had two. Those that did not have such a course covered the subject in other courses. A few programs had architecture courses that focused on microcontrollers rather than on computers in general. 7. Operating systems. This course often has the organization and architecture class as a prerequisite along with a course covering data structures. In most versions of this class there is a strong software component. Almost every program had a course on operating systems. 8. Real-time programming. This course has a variety of names including "embedded systems". It can be a mixed hardware/software course. We included it on the software side only if there was an indication that it was primarily software in the course description. In some cases, the material covered in these courses has overlap with computer organization and architecture. 9. Software engineering. Some programs require a course or two titled "software engineering". In some cases, the catalog description for such courses does not appear to be substantially different from courses called algorithms or data structures elsewhere. For this paper we took the term software engineering to refer to courses that deal with the modelling, design, analysis, or verification of a software system. 10. Computer system concepts. This course may have many different variations, but in general covers the design, organization and implementation of system software. In many cases it focuses on practical application. Topics may include operating system concepts including processes, threads, memory management, and inter-process communication, the use and control of various input/output (I/O) devices, memory organization, and concurrency management, command language interpreters (shells), file systems, and elementary network concepts. We considered several other classes including networks but, for computer engineering students, this class is most often a mix of hardware and software. The data we accumulated is presented in Table A-1 of the appendix. Figures 1 to 3 provide a graphical comparison of the categories and the computer engineering programs. Results Figure 1 shows the percentage of schools surveyed which require courses in the ten core programming categories described above. As can be seen, four categories stand out as being common core requirements: CS Fundamentals I and II; Organization and Architecture; and Operating Systems. In many cases, programming courses which are not required under the computer engineering curriculum may satisfy elective requirements. Figure 2 shows the percent of credit hours devoted to software based courses. For example, 8 of the 40 schools sampled had programs consisting of 18% software. Most of the schools in our sample required 10% to 18% software-based courses in their computer engineering programs. Since the average computer engineering program requires about 128 credit hours this comes to 13 to 23 hours of software. To put this in perspective a minor typically requires about 20 hours of course work in a discipline and ABET requires about 32 hours of math and science. Figure 1 Percentage of programs surveyed which require a course within core categories. Figure 2 Number of schools out of forty in the sample with percentage of required software courses. Figure 3 shows the percentage of the total credit hours required for each software course over all of the schools which require that course. Consider, for example, the Organization and 0 20 40 60 80 100 A CS Fundementals I B CS Fundementals II C Object-oriented Programming
Accelerating Research
Robert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom
Address
John Eccles HouseRobert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom