Learning from the past to try not to rediscover the wheel
again
Sónia Rolland Sobral [0000-0002-5041-3597] 1 REMIT, Universidade Portucalense, Porto, Portugal
Abstract. Initial programming curricular units are of great importance to com-puter courses. There has been very important work with curriculum recommen-dations, notably those from Association for Computing Machinery (ACM) and later ACM in conjunction with the Institute of Electrical and Electronics Engi-neers (IEEE): so far almost twenty curriculum recommendations have been pub-lished.
Computing is a constantly evolving area, as is society and the way new gen-erations learn. Why are so many recommendations needed? And what are the developments in these recommendations?
This article lists initial course units that are suggested or used as examples in each of the curriculum recommendation reports, both initial and generic, and those that address a specific area, namely Computer Engineering (CE), Computer Science (CS), Information Systems (IS), Information Technology (IT), and Soft-ware Engineering (SE).
This study is of great importance for those who have the responsibility to de-sign and redede-sign curricula as it points out a number of different paths, namely in relation to the already mentioned distinction by areas but also the distinction that is made by university size, previous knowledge of the students, and also du-ration of studies, among other variables. Knowing history makes it possible to understand the present and even make better choices for the future.
Keywords: CS1, CS2, Curriculum Recommendations.
1
Introduction
The importance of the initial programming curriculum units has a great importance to the academic life and professional future of a computer science student. The content of these units, the objectives, the programming languages, and the way everything is learned and taught needs a lot of thought to be successful.
Since the 1960s, efforts have been made to make curriculum recommendations for universities around the world: the importance of ACM and later Association for Com-puting Machinery (ACM) in conjunction with the Institute of Electrical and Electronics Engineers (IEEE), it is a huge relevance to computer science field. The lessons of those
studies should be taken, even when they seem to be outdated or no longer making sense. Of course, these documents are closely linked to the emergence of new programming languages and paradigms, but they all have in common the need to give directions to the course directors and teachers of these curricular units. It is very important for the evolution to be made but even more important is not to follow the trends and try to affirm it just for the sake of modernity or because another university has made that change.
At the beginning of this century, there was made a distinction between Com-puter Engineering (CE), ComCom-puter Science (CS), Information Systems (IS), Infor-mation Technology (IT), and Software Engineering (SE). In this way the new curricu-lum reports have come to focus on a specific area, and there is a departure from the core and elective areas by each of the specific cases.
This article gives a description of each of the curriculum recommendation doc-uments and identifies key points for the initial programming units. A reflection is made of the way that has been travelled, the present and the clues for the next years
2
The curriculum recommendations reports
The first curriculum studies for undergraduate studies in Computer Science appeared in March 1968, when the Association for Computing Machinery (ACM) published an innovative and necessary document, Curriculum 68: Recommendations for academic programs in computer science [1], with early indications of curriculum models for pro-grams in computer science and computer engineering.
With the emergence of many new courses and departments, ACM published a new re-port, Curriculum'78: recommendations for the undergraduate program in computer sci-ence [2], updating Curriculum 68.
Despite the importance of Curriculum'78 there has been much discussion, par-ticularly regarding the sequence CS1 and CS21. In 1984 a new report is published:
“Recommended curriculum for CS1, 1984” [3] and in 1985 appear a new document “Recommended curriculum for CS2, 1984” [4].
In 1991 [5] IEEE (Institute of Electrical and Electronics Engineers) and ACM joined for a new document (this report does not contain a single prescription of courses for all undergraduate programs, but a collection of subject matter modules called knowledge units).
In 2005, the Computing Curriculum 2005: The Overview Report [6], covering un-dergraduate degree programs in Computer Engineering, Computer Science, Infor-mation Systems, InforInfor-mation Technology, and Software Engineering; provides under-graduate curriculum guidelines for five defined sub-disciplines of computing:
(1) Computer Engineering (Curriculum Guidelines for Undergraduate De-gree Programs in Computer Engineering 2004 ( [7] and then 2016 [8]).
1 The terms CS1 and CS2 are used since 1978 [2] to designate the first two courses in the
intro-ductory sequence of a computer science. Introduction to programming courses as CS1 and basic data structures courses as CS2. Or Computer Programming I (CS1) as the initial unit, prerequisite for Computer Programming II (CS2).
(2) Computer Science (Computing Curricula 2001 [9], then in 2008 [10] and 2013 [11])
(3) Information Systems (Association for Computing Machinery (ACM), Association for Information Systems (AIS) and Association of Infor-mation Technology Professionals (AITP) published Model Curriculum and Guidelines for Undergraduate Degree Programs in Information Sys-tems 1997 [12], 2002 [13] and 2010 [14].
(4) Information Technology (Curriculum Guidelines for Undergraduate De-gree Programs in Information Technology 2008 [15] and 2017 [16]) (5) Software Engineering (Curriculum Guidelines for Undergraduate Degree
Programs in Software Engineering 2004 [17] and 2014 [18]).
Since Curriculum’68 [1] there have been 6 new general reports and 2 or 3 more for each of the five specific areas defined in 2005 by the CC2005. Why are there so many recommendations reports? The massification of the World Wide Web, laptops, mobile phones, object-oriented paradigms, the security aim, among others. But also pedagogi-cal issues such as computer-mediated distance learning or the new world of collabora-tive tools. These changes require curriculum changes: because everything changes.
3
The freshman computer science curricular units
3.1 From 1968 until the division by areas
Curriculum1968 [1] defines a “classification of subject areas contained in computer science and twenty-two courses in these areas.” Prerequisites, catalog descriptions, de-tailed sketches, and annotated bibliographies were included for each of these courses. The course has an initial structure as you can see in the following figure. Two courses are proposed for a first year: B1. Introduction to Computing and B2. Computers and Programming. Both with 2-2-3, two hours of lectures and two hours of laboratory per week for a total of three semester hours of credit.
Fig 1. Core Courses of the proposed undergraduate program [1]
Curriculum'78 [2] introduced a new core structure, as shown in the following figure. Computer Programming I (CS1) is the initial unit, prerequisite for Computer Program-ming II (CS2), which is prerequisite for Introduction to Computer Systems (CS3), In-troduction to Computer Organization (CS4), and InIn-troduction to File Processing (CS5). CS1 and CS2 have the same model as the initial course units of the previous report: 2-2-3.
Fig 2. Computer science core curriculum [2]
Curriculum'91 [5] has made a change from previous recommendations: this report does not contain a single prescription of courses for all undergraduate programs. Each knowledge unit corresponds to a topic that must be covered at some point during the
undergraduate curriculum. It contains “a set of curricular and pedagogical considera-tions that govern the mapping of the common requirements and advanced/supplemental material into a complete undergraduate degree program” and a collection of subject matter modules called knowledge units that comprise the common requirements for all undergraduate programs. Each individual institutions have flexibility to assemble the knowledge units into course structures that fit their particular needs. The reason given is that “a curriculum for a particular program depends on many factors, such as the purpose of the program, the strengths of the faculty, the backgrounds and goals of the students, instructional support resources, infrastructure support and, where desired, ac-creditation criteria. Each curriculum will be site-specific, shaped by those responsible for the program who must consider factors such as institutional goals, opportunities and constraints, local resources, and the preparation of the students”. The appendix of the full report contains the 12 sample curricula, showing how the knowledge units can be combined to form courses and programs (see next table): Implementation A to K: A Program in Computer Engineering, in Computer Engineering (Breadth-First), in puter Engineering (Minimal Number of Credit-Hours), in Computer Science, in puter Science (BreadthFirst), in Computer Science (Theoretical Emphasis), in Com-puter Science (Software Engineering Emphasis), a Liberal Arts Program in ComCom-puter Science (Breadth-First), a Program in Computer Science and Engineering, a Liberal Arts Program in Computer Science, a Liberal Arts Program in Computer Science (Breadth-First) and a Program in Computer Science (Theoretical Emphasis). The first nine sample curricula have “as a common goal the preparation of graduates for entry into the computing profession” and the last tree have other goals than the preparation of graduates for entry into the profession, like “preparation for a lifetime of learning, breadth of education or preparation for graduate study".
Table 1. Freshman Year, CS, each of 12 sample curricula.
1st Semester 2nd Semester A Prog Computer Engineering Introduction to
Computing I
Introduction to Compu-ting II
B Prog Computer Engineering (Breadth-First)
Prob Solving, Programs & Com-puters
Abstraction, Data Struct & Lg Softw Syst C Prog Computer Engineering
(Minimal Number of Credit-Hours)
Intro to Prob Solv w/ Comput
Intro to Software Engr
D Prog Computer Science Introduction to Computing I
Introduction to Compu-ting II
E Prog Computer Science (BreadthFirst)
Prob Solving, Programs & Com-puters
Abstraction, Data Struct & Lg Softw Syst F Prog Computer Science
(Theoretical Emphasis)
Computing I Computing II G Prog Computer Science
(Software Engineering Emphasis) Introduction Soft-ware to Engineer-ing Software Methodology
H LA Prog
Computer Science (Breadth-First)
Prob Solving, Programs & Com-puters
Abstraction, Data Struct & Lg Softw Syst I Prog Computer Science and
Engineering Introduction to Computing I Introduction to Compu-ting II J LA Prog
Computer Science Fundamentals of Computing I Fundamentals of Com-puting II K LA Prog Computer Science (Breadth-First) Prob Solving, Programs & Com-puters
Abstraction, Data Struct & Lg Softw Syst L Prog Computer Science
(Theoretical Emphasis)
Introduction to CS I
Introduction to CS II
3.2 Computer Engineering
CECurriculum2004 (Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering 2004) [7]) defined four different example: Computer Science Department, Electrical & Computer Engineering Department, Joint - Computer Science and Electrical Engineering Departments and United Kingdom; each one have different curricular units to the first year, as we can see in the next table.
Table 2. Computer Engineering, first year curricular units, CS, 2004.
1st Semester 2nd Semester A Computer Science
De-partment
CSCA101 Computer Sci-ence I
CSCA102 Computer Sci-ence II
B Electrical & Computer Engineering Department
CSCB101 Programming & Prob. Solving I
CSCB102 Programming & Prob. Solving II C Joint - Computer
Sci-ence and Electrical Engi-neering Departments
CSCC102 Programming I CSCC103 MTH 101 Pro-gramming II
D United Kingdom SWED101 Programming Basics
SWED102 Programming Fundamentals
CECurriculum2016 (Joint Task Group on Computer Engineering Curricula [8]) de-fined five different model: Four-Year Model, Administered by Computer Science, Ad-ministered jointly by CS and EE, AdAd-ministered in China and Bologna-3 Model.
Table 3. Computer Engineering, first year curricular units, CS, 2016.
1st Semester 2nd Semester Four-Year Model CSCA101 Introduction to
Computer Programming CSCA102 Intermediate Computer Programming Administered by Com-puter Science CSCB101 Computer Sci-ence I CSCB102 Computer Sci-ence II
Administered jointly by CS and EE
CSCC101 Programming Fundamentals I
Administered in China CSTD 101 Fundamentals of Programming
CSTD 201 Fundamentals Object-oriented Program-ming
Bologna-3 Model SWEE101 Programming Basics
SWEE102 Programming Fundamentals
3.3 Computer Science
CC2001 [9] presented six different implementation strategies to Introductory Courses: Imperative first, Objects first, Functional first, Breadth first, Algorithms first and Hardware first. It is suggested that the sequence CS1 and CS2 move to three units: 101, 102 and 103 or if it is not feasible to move to sequence 111 and 112 as we can see in the next table.
Table 4. Three and two-course sequences for each implementation strategies,
CC2001. Implemen. strategies
Three-course sequences Two-course sequences
Imperative first
CS101I. Programming Funda-mentals
CS102I. The Object-Oriented Par-adigm
CS103I. Data Structures and Al-gorithms
CS111I. Introduction to Program-ming
CS112I. Data Abstraction
Objects first
CS101O. Introduction to Object-Oriented Programming
CS102O. Objects and Data Ab-straction
CS103O. Algorithms and Data Structures
CS111O. Object-Oriented Pro-gramming
CS112O. Object-Oriented Design and Methodology
Functional first
CS111F. Introduction to Func-tional Programming
Breadth first
A one-semester course (CS100B) that serves as a prerequisite A preliminary implementation of a breadth-first introductory se-quence (CS101B/102B/103B) that seeks to accomplish in three se-mesters what has proven to be so difficult in two
Algorithms first
CS111A. Introduction to Algo-rithms and Applications
CS112A. Programming Methodol-ogy
Hardware first
CS111H. Introduction to the Com-puter
CS112H. Object-Oriented Pro-gramming Techniques
CS2008 [10] “only” updates CS2001 Body of Knowledge and put additional com-mentary/advice in the accompanying text.
The CS2013 report [11] includes examples of courses from a variety of universities and colleges to illustrate how topics in the Knowledge Areas may be covered and com-bined in diverse ways. Has a separate chapter discusses introductory courses, with identification of some factors to give a set of tradeoffs that must be considered when trying to decide what should be covered early in a curriculum. Design Dimensions, Pathways through Introductory Courses, Programming Focus, Programming Paradigm and Choice of Language, Software Development Practices, Parallel Processing, Plat-form and Mapping to the Body of Knowledge. Included in examples of initial courses: CS1101: Introduction to Program Design, WPI (Worcester, MA), COS 126: General Computer Science (Princeton University, NJ), a background course CS 106A: Program-ming Methodology (Stanford University), and the sequences CS 115 Introduction to Computer Programming and CS 215 Introduction to Program Design, Abstraction and Problem Solving (Bluegrass Community and Technical College) and CSCI 134 – In-troduction to Computer Science and CSCI 136 – Data Structures and Advanced Pro-gramming (Williams College).
3.4 Information Systems
Information Systems (Association for Computing Machinery (ACM), Association for Information Systems (AIS) and Association of Information Technology Profession-als (AITP) published Model Curriculum and Guidelines for Undergraduate Degree Pro-grams in Information Systems 1997 [12], 2002 [13] and 2010 [14]. ISCurriculum’97 presented IS’97.5 – Programming, Data, File and Object Structures. ISCurriculum2002
presented IS 2002.5 – Programming, Data, File and Object Structures, updating IS’97.5 – Programming, Data, File and Object Structures. IS2010 removed the application de-velopment from the prescribed core: “Application dede-velopment can still be offered in most IS programs. By offering application development as an elective the IS 2010 model curriculum increases its reach into nonbusiness IS programs while also creating flexibility for curricula that choose to include an application development course. The programs that want to go even further and include a sequence of programming courses can choose from approaches introduced either in the Computer Science or in the Infor-mation Technology curriculum volumes (CS 2008 or IT 2008, respectively)”.
3.5 Information Technology
Information Technology (Curriculum Guidelines for Undergraduate Degree Pro-grams in Information Technology 2008 [15] and 2017 [16]) presented one course each Programming Fundamentals and ITE-SWF Software Fundamentals, respectively.
3.6 Software Engineering
Software Engineering (Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering 2004 [7] presented two model curriculum’s: Start software engineering in first year and Start software engineering in second year, as we can see in the next table.
Table 5. Introductory Computing Sequence, start software engineering in first or
second year, SE2004.
1st Semester 2nd Semester A: Start software
engi-neering in first year.
SE101 Introduction to Software Engineering and Computing
SE102 Software Engi-neering and Computing II B: Introduction to
soft-ware engineering in sec-ond year
CS101I Programming Fundamentals
CS102I The Object-Ori-ented Paradigm
SE2014 [18] presented two examples:
Example 1: Mississippi State University (semester type) CSE 1284 Introduction to Computer Programming CSE 1384 Intermediate Computer Programming
Example 2: Rose-Hulman Institute of Technology (Trimester type) CSSE 120 Introduction to Software Development
CSSE 220 Object-Oriented Software Development CSSE 132 Introduction to Computer Systems Design
4
Conclusion
Since Curriculum’68 there have been 6 new general reports and 2 or 3 more for each of the five specific areas defined in 2005 by the CC2005: Computer Engineering, Com-puter Science, Information Systems, Information Technology and Software Engineer-ing. If the initial curriculum included a lot of information about unit content (including programming languages and even annotated bibliography), the curriculum by area is no longer so complete.
The first curriculum recommendations were straightforward, while the curriculum recommendations are modular-type: at this moment it is more important to see exam-ples of curriculum that can be considered successful and implement them according to several different items, namely the length of the degrees, the students’ knowledge from secondary education and if the university can impose prerequisites. In this way each university adopts the recommendations, fitting them in their own realities.
The objectives of the course (and the intended career opportunities for undergraduate students) are crucial for curriculum design. In the case of this article, and looking only at the initial programming courses, we see the differences of each different area: IS2010 model curriculum removed the application development from the prescribed core. IT2008 and IT2017 presented one course each.
In this context, and after listing the introductory programming curricular units for the first year of undergraduate degrees, it would be interesting to list the current curric-ula of the best universities in the world and to see what is being done on each continent, each country and each area.
References
[1] W. F. Atchison, S. D. Conte , J. W. Hamblen , T. E. Hull , T. A. Keenan , W. B. Kehl , E. J. McCluskey , S. O. Navarro , W. C. Rheinboldt, E. J.
Schweppe, W. Viavant and D. M. Young, Jr., "Curriculum 68:
Recommendations for academic programs in computer science: a report of the ACM curriculum committee on computer science," Communications of
the ACM, vol. v.11 n.3, pp. 151-197, Março 1968.
[2] R. H. Austing, B. H. Barnes, D. T. Bonnette, G. L. Engel and G. Stokes, "Curriculum '78: recommendations for the undergraduate program in computer science— a report of the ACM curriculum committee on computer science," Communications of the ACM, vol. v.22 n.3, pp. 147-166, Março 1979.
[3] E. B. Koffman , P. L. Miller and C. E. Wardle, "Recommended curriculum for CS1, 1984," Communications of the ACM, vol. v.27 n.10, pp. .998-1001, Outubro 1984.
[4] E. B. Koffman , D. Stemple and C. E. Wardle , "Recommended curriculum for CS2, 1984: a report of the ACM curriculum task force for CS2,"
Communications of the ACM, vol. 28, no. 8, pp. 815-818, 1985.
[5] A. B. Tucker and ACM/IEEE-CS Joint Curriculum Task Force., Computing curricula 1991 : report of the ACM/IEEE-CS Joint Curriculum Task Force, ACM Press, 1990, p. 154.
[6] The Joint Task Force for Computing Curricula 2005, "Computing Curricula 2005: The Overview Report," ACM, 2005.
[7] The Joint Task Force on Computing Curricula, "Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering," ACM, 2004. [8] Joint Task Group on Computer Engineering Curricula, "CE2016: Computer
Engineering Curricula 2016," ACM, 2016.
[9] The Joint Task Force IEEE and ACM, "CC2001 Computer Science, Final Report," 2001.
[10] L. Cassel, A. Clements, G. Davies, M. Guzdial and R. McCauley, "Computer Science Curriculum 2008: An Interim Revision of CS 2001," ACM, 2008.
[11] Task force ACM e IEEE, "Computer Science Curricula 2013," ACM and the IEEE Computer Society, 2013.
[12] G. B. Davis, J. T. Gorgone, J. D. Couger, D. L. Feinstein and H. E. Longenecker Jr., "Model Curriculum and Guidelines for Undergraduate Degree Programs in Information Systems," ACM, 1997.
[13] J. T. Gorgone, G. B. Davis, J. S. Valacich, H. Topi, D. L. Feinstein and H. E. Longenecker Jr, "IS2002: Curriculum Guidelines for Undergraduate Degree Programs in Information Systems," ACM, 2002.
[14] H. Topi, J. S. Valacich, R. T. Wright, K. M. Kaiser, J. Nunamaker Jr, J. C. Sipior and G. de Vreede, "IS2010 Curriculum Update: Curriculum Guidelines for Undergraduate Degree Programs in Information Systems," ACM, 2010. [15] B. M. Lunt, J. J. Ekstrom, S. Gorka, G. Hislop, R. Kamali, E. Lawson, R.
LeBlanc, J. Miller and H. Reichgelt, "IT2008: Computing Curricula Information Technology Volume," ACM, 2008.
[16] Task Group on Information Technology Curricula, "IT2017: Curriculum Guidelines for Baccalaureate Degree Programs in Information Technology," ACM, 2017.
[17] The Joint Task Force on Computing Curricula , "SE2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering," ACM, 2004.
[18] Joint Task Force on Computing Curricula, "SE2014: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering," ACM, 2014.
[19] E. B. Koffman, D. Stemple and C. E. Wardle, "Recommended curriculum for CS2, 1984," Communications of the ACM, vol. 28, no. 8, pp. 815-818, 1985.