** Update **
The ACM Committee for Computing Education in Community College (CCECC) is updating its 2009 Guidelines for Associate-Degree Transfer Curriculum in Computer Science. The update is based on ACM's CS2013 curriculum guidelines and will include contemporary cybersecurity content. See the home page ccecc.acm.org for the latest draft versions and news.
The foundation for the Computer Science associate-degree transfer program is the three-course computing sequence CS I - CS II - CS III. This sequence should be accompanied by the opportunity for additional computing courses based on a variety of factors, including transfer requirements, institutional specializations, and student interests.
computer science model curricula have identified at least three
"paradigms" or approaches that one could take to computer science
content: objects-first (centered on object-oriented programming),
breadth-first (an initial holistic view subsequently progressing
deeper), and imperative-first (centered on procedural programming). The
Computer Science associate-degree transfer program now calls for a
- Object-oriented programming is emphasized in CS I, but not necessarily early in the semester. The topics of algorithms and fundamental programming constructs are important components of CS I and are consistent with the Bohm-Jacopini theory for procedural programming.
- The breadth-first approach is used in the coverage of three important topics: ethics and professionalism, security, and software engineering principles. These topics are covered in deeper and deeper fashion as the student progresses from CS I to CS II to CS III.
Course content on software engineering principles is prominent in the Computer Science associate-degree transfer curriculum. An essential tenet of software engineering is ensuring a disciplined, controlled approach to software evolution and reuse. The principles of software engineering progress in the CS I-II-III course sequence from an initial focus on program development to software development and then to broader software engineering concerns.
Security topics are covered in deeper and deeper fashion as the student progresses from CS I to CS II to CS III. In CS I, students use encapsulation to incorporate privacy into their applications. In CS II, students use security-aware exception handling to help prevent buffer overflows, memory leaks and back-door accesses. In CS III, students develop and ensure robust attack-resistant code by testing applications for known security flaws.
Similarly, the course content across CS I-II-III forms a natural progression for the topics of social awareness, ethics, privacy and legal concerns, and professionalism. The first course (CS I) begins by examining the historical context of computing and ethical conduct, focusing on individual behaviors. The second course (CS II) follows by considering the societal impacts of computing and the Internet and encouraging students to recognize the direct and far-reaching effects of their work and behaviors. Culminating in the third course (CS III), the students begin internalizing the importance of professional and ethical behavior through their project activities, team interactions, and exposure to professional organizations and publications; the goal is to help the students begin to view themselves as ethical software developers.
In addition to the CS I-II-III core sequence, a collection of additional "intermediate" courses are identified providing a variety of paths of study and serving local considerations. These courses also add specific content to the Computer Science program of study, including a focused emphasis on security (the Introduction to Computer Security course), preparation for future study in software engineering (the Introduction to Software Engineering course), and the design of system architecture (the Computer Organization and Architecture course).
Students are best served by completing the three-course sequence CS I - CS II - CS III, together with additional intermediate computing courses to be determined by the local institution based on the requirements of transfer institutions, expertise of the faculty, and availability of hardware and software. With these additional intermediate computing courses, students will be better prepared to transfer successfully into the upper division of a baccalaureate degree program and will have acquired a reasonable level of understanding in the various subject areas that define the discipline, as well as develop an appreciation for the interrelationships among these areas.
The Computer Science associate-degree transfer program includes a minimum of two terms of mathematics preparation: Discrete Structures and Calculus I; articulation agreements between baccalaureate institutions and associate-degree institutions may define additional mathematics requirements. It is often the case that students who enter a two-year college intending to pursue computer science have insufficient mathematics preparation; such students should be counseled to complete a rigorous pre-calculus course in their first semester of study. This preparation will enable these students to engage the CS I course simultaneously with their mathematics studies, and to remain on schedule to graduate in four semesters.
The Computer Science associate-degree transfer curriculum represents the program course configuration appropriate to the United States. In the first term (typically a semester, but in alternative learning environments perhaps a different time frame), students begin their computer science core sequence, have the opportunity to prepare themselves (as needed) mathematically, and address general education requirements. In terms two and three, students continue the computer science core sequence, complete the required mathematics courses, and continue addressing general education coursework. Terms three and four provide an opportunity for intermediate computer science courses or additional mathematics preparation; such courses must be selected based on student interests, transfer requirements and articulation agreements.