CS Curriculum Proposal 2016-02-16 page 1 of 10 Proposal for Revisions to the Computer Science Curriculum 2004-2005 1. Summary This proposal describes changes to the Computer Science curriculum. The changes are detailed below, and can be summarized as follows: clarify the requirements in Mathematics remove a required course: Social and Professional Issues add a required course: Software Engineering add a required capstone course: Computer Science Seminar change the requirements for Honors 2. Objectives The three CS faculty have identified several objectives for our program: 1. Reflect continuing developments in computer science and computer science education. 2. Provide students with a thorough understanding of fundamental concepts, to enable them to adapt to the continual changes in the discipline. 3. Expose students to current topics and techniques, particularly in areas which are likely to increase in importance. 4. Contain flexibility to adapt to student and faculty interests. 3. Model Curricula Computer science is a constantly changing field, in which research and theory quickly become common practice; thus CS programs should continually evaluate and adjust their courses and curricula. This is evidenced by a variety of curricular models: 1. The Computing Accreditation Commission (CAC), part of the Accreditation Board for Engineering and Technology, Inc (ABET), is the recognized accrediting body for college and university programs in computer science, information systems, and software engineering, and publishes updated criteria every few years. 2. The ACM/IEEE Joint Task Force on Computing Curricula develops the most widely used curricular models. Computing Curricula 2001 (ACM/IEEE Joint Task Force, 2001) updated and revised Computing Curricula 1991 (Tucker, et, al, 1991). 3. The Liberal Arts Computer Science Consortium (LACS) consists of CS programs at roughly 20 elite liberal arts colleges, and regularly publishes model curricula, often in response to the ACM/IEEE Task Force. The most recent draft model was released in early 2004, and updates and revises two earlier models (Walter and Schneider, 1996; Gibbs and Tucker, 1986). Our goal is to balance the ACM/IEEE and LACS recommendations. CAC/ABET accreditation appears to require more faculty members, support, facilities, and student coursework than are currently feasible at Muhlenberg. (Note that Lafayette and Lehigh have accredited CS programs.) CS Curriculum Proposal 2016-02-16 page 2 of 10 4. Current CS Program The current CS course offerings can be divided into four categories: 1. non-major courses o CSI 101: Introduction to Computer Science 2. introductory courses o CSI 110: Computer Science I (G) o CSI 111: Computer Science II (G) 3. core courses o CSI 220: Data Structures and Algorithms o CSI 235: Social and Professional Issues in Computer Science (W) o CSI 240: Computer Organization 4. elective courses o CSI 305: Database Systems o CSI 310: Theory of Programming Languages o CSI 320: Theory of Computation o CSI 326: Artificial Intelligence o CSI 340: Compiler Design o CSI 345: GUI and Web Programming o CSI 350: Operating Systems o CSI 355: Data Communications and Networking The requirements for the CS minor and major are summarized below: courses 1 1 3 2 7 courses 1 2 5 4 12 description math required math electives CS required CS electives TOTAL description math required math electives CS required CS electives TOTAL CS Minor Requirements – Current courses MTH 121: Calculus I MTH 122: Calculus II, MTH 144: Intro to Statistical Analysis, MTH 215: Discrete Structures, or MTH 226: Linear Algebra CSI 110, CSI 111, and CSI 240 CSI 220, CSI 235, or 300-level electives listed above 2 Math + 5 CS CS Major Requirements – Current courses MTH 215: Discrete Structures MTH 121: Calculus I, MTH 122: Calculus II, MTH 144: Intro to Statistical Analysis, or MTH 226: Linear Algebra CSI 110, CSI 111, CSI 220, CSI 235, and CSI 240 listed above; must include CSI 310, CSI 320, or CSI 350 3 Math + 9 CS The requirements for honors in CS are: a GPA in the CS major of at least 3.5, and an overall GPA of at least 3.3 successful completion of 8 units in computer science above the 100 level, to include at least two of CSI 310, CSI 320, and CSI 350. CS Curriculum Proposal 2016-02-16 page 3 of 10 5. Changes & Rationale 5.1. Clarify Mathematics Co-Requisites The mathematical co-requisites will be clarified so that the CS minor and major both require MTH 121: Calculus I and MTH 215: Discrete Structures. The CS major will also require one math elective: MTH 122: Calculus II or MTH 144: Introduction to Statistical Analysis. Currently the CS minor requires Calculus I and one of four math electives, while the CS major requires Discrete Structures and two of four math electives. However, Discrete Structures has a Calculus I prerequisite; thus, Calculus I is effectively required for CS majors. Similarly, any student taking Linear Algebra would have completed Calculus I and II as prerequisites. MTH 210: Transition to Abstract Mathematics is required for mathematics majors, and math majors cannot receive credit for both MTH 210 and MTH 215 due to significant overlap in coverage. MTH 215 also has significant overlap with MTH 345: Combinatorics and Graph Theory, which has MATH 210 as a prerequisite. Thus, MTH 345 will be accepted in lieu of MATH 215 as a co-requisite for CS. 5.2. Social and Professional Issues (discontinued course) Social and Professional Issues in Computer Science will be removed from the CS curriculum. This course was added several years ago to satisfy the W requirement and to cover material in the ACM Body of Knowledge. These topics can be covered more effectively in other courses, particularly Software Engineering and Computer Science Seminar, which will also satisfy the W requirement. 5.3. Software Engineering (new course) Software Engineering (SE) will be a new 200-level course, which will satisfy the general academic requirement W. It will be required for CS majors and an elective for CS minors. SE will address the core software engineering topics and some of the social and professional issues topics identified in the CC2001 body of knowledge. Writing will be an integral part of both topic areas; students will gain experience reading and writing the sorts of documents they will encounter as professionals, as well as exploratory and reflective essays on social and professional issues. Catalog Description: A project-based study of the theory, practice, processes, and tools used to design, build, and maintain large software systems. Topics include requirements analysis, system architecture, design, testing, maintenance, and project management, as well as professional practice, risks, intellectual property, and social impact of computing. Prerequisite: CSI 111: Computer Science II Meets general academic requirements W. CS Curriculum Proposal 2016-02-16 page 4 of 10 5.4. Computer Science Seminar (new course) Computer Science Seminar will be a new 300-level course, required for CS majors, which will satisfy the general academic requirement W. CS Seminar will have two major components. Students will work in teams on semester-long software projects supervised by faculty; team assignments and project scope will be negotiated at the beginning of the semester. In a weekly seminar, students, faculty, and guest speakers will read about, present, and discuss their projects and topics from the literature. Topics will vary each semester based on faculty and student interests and current events, but will usually include a combination of technical topics (such as algorithms, hardware, and standards) and professional topics (such as processes and ethical issues). Catalog Description: Advanced study of selected topics in computer science. Students will also work in teams on a significant software project. Prerequisite: CS 210: Software Engineering, CS 220: Data Structures and Algorithms, and CS 240: Computer Organization, or by permission. Meets general academic requirements W. 5.5. Honors in Computer Science The proposed requirements for honors in CS will be: a 3.5 GPA in the CS major, and a 3.3 GPA overall proposal and completion of a significant research project 5.6. Rationale for Increasing the Number of Required CS Courses The current CS major requires 12 courses (9 CS and 3 mathematics), and the proposed CS major will require 10 CS courses and 3 mathematics courses, a total of 13 courses. Several factors motivate the proposal for an additional course: Almost all science majors at Muhlenberg require 14 or 15 courses. The lone exceptions are mathematics and computer science. The Muhlenberg faculty has recognized that the sciences need to require more than the traditional 12 courses. The additional courses help ensure that our students receive a science education that meets national norms and that prepares them for careers and further education. In addition, most colleges require CS majors to take more courses; for example, Denison, Colgate, St. Olaf, Carleton, Dickinson, and Lafayette each require 10 or more CS courses, supplemented with mathematics cognates. Thus, requiring an additional course will more closely conform to national and Muhlenberg norms in science education. We are adding a new CS Seminar. The format and conduct of this seminar is considerably different from other courses, and provides the Capstone experience that the Muhlenberg faculty desired for all students. (The Capstone experience was a cornerstone of the new curriculum that came into existence when the College switched from a credit to a course system. It was to be a bookend to the First Year Seminar. Because of resource constraints, the Capstone was never codified as part of every Muhlenberg student's education.) Adding the seminar will provide CS students with a Capstone experience without decreasing their exposure to traditional, standard areas of CS that provide a core experience in fundamental concepts. CS Curriculum Proposal 2016-02-16 page 5 of 10 6. Proposed CS Program The proposed CS course offerings can be divided into four categories: 1. non-major courses o CSI 101: Introduction to Computer Science 2. introductory courses o CSI 110: Computer Science I (G) o CSI 111: Computer Science II (G) 3. core courses o CSI 210: Software Engineering (W) – new course o CSI 220: Data Structures and Algorithms o CSI 240: Computer Organization 4. elective courses (specific offerings will vary based on interest, etc) o CSI 305: Database Systems o CSI 310: Theory of Programming Languages o CSI 320: Theory of Computation o CSI 326: Artificial Intelligence o CSI 340: Compiler Design o CSI 345: GUI and Web Programming o CSI 350: Operating Systems o CSI 355: Data Communications and Networking 5. CSI 370: Computer Science Seminar (W) – new course The proposed requirements for the CS minor and major are summarized below: courses 2 3 2 7 courses 2 1 5 4 1 13 description math required CS required CS electives TOTAL description math required math elective CS required CS electives CS seminar TOTAL CS Minor Requirements – Proposed courses MTH 121: Calculus I, MTH 215: Discrete Structures CSI 110, CSI 111, and CSI 220 2 Math + 5 CS (no change from current) CS Major Requirements – Proposed courses MTH 121: Calculus I, MTH 215: Discrete Structures MTH 122: Calculus II, MTH 144: Intro to Statistical Analysis CSI 110, CSI 111, CSI 210, CSI 220, and CSI 240 3 Math + 10 CS CS Curriculum Proposal 2016-02-16 page 6 of 10 7. Typical Course Offerings Typical Two Year Course Offerings – CURRENT Year Fall Semester Spring Semester 1 Intro to CS Intro to CS Computer Science I (2 sections) Computer Science I Computer Science II Computer Science II Computer Org Data Structures & Algorithms Social & Prof Issues (Math: Discrete Structures) Programming Languages Operating Systems Networks Software Engineering 7 7 2 Intro to CS Intro to CS Computer Science I (2 sections) Computer Science I Computer Science II Computer Science II Computer Org Data Structures & Algorithms Social & Prof Issues (Math: Discrete Structures) Theory of Computation Database Systems Web Programming Artificial Intelligence 7 7 Comments non-major intro core elective 14 Total Courses non-major intro core elective 14 Total Courses Typical Two Year Course Offerings – PROPOSED Year Fall Semester Spring Semester Comments 1 Intro to CS Intro to CS non-major Computer Science I ( 2 sections) Computer Science I intro Computer Science II Computer Science II Software Engineering Computer Organization core (Math: Discrete Structures) Data Structures & Algorithms Compiler Design Operating Systems electives will vary Networks Programming Languages based on interest, etc. CS Seminar 8 7 15 Total Courses 2 Intro to CS Intro to CS non-major Computer Science I (2 sections) Computer Science I intro Computer Science II Computer Science II Software Engineering Computer Organization core (Math: Discrete Structures) Data Structures & Algorithms Theory of Computation Database Systems electives will vary Web Programming Artificial Intelligence based on interest, etc. CS Seminar 8 7 15 Total Courses CS Curriculum Proposal 2016-02-16 page 7 of 10 8. Typical Student Sequence The following tables show typical course sequences for CS majors. The first table assumes that the student begins taking CS course during their first year; the second table assumes that the student begins taking CS courses during their second year. Typical four year course sequence for CS majors - PROPOSED Year Fall Semester Spring Semester Comments 1 Calculus I Calculus II Computer Science I Computer Science II 2 Discrete Structures Computer Organization Software Engineering Data Structures & Algorithms 3 elective elective 4 elective elective CS Seminar 1 Math, 5 CS 3 Math, 10 CS total 2 Math, 5 CS Typical three year course sequence for CS majors – PROPOSED Year Fall Semester Spring Semester Comments 1 Calculus I Calculus II Computer Science I Computer Science II 2 Discrete Structures Computer Organization Software Engineering Data Structures & Algorithms 3 elective elective elective elective CS Seminar 1 Math, 5 CS 3 Math, 10 CS total 2 Math, 5 CS 9. Institutional Impact These changes will primarily impact the CS major and minor. This will increase the number of courses required for the major from 12 to 13. This will also increase the number of CS courses offered each year from 14 to 15. It should not affect students and faculty in other disciplines. We are currently working to improve CS laboratory facilities. The proposed changes will not significantly impact our laboratory requirements. The proposed changes will not significantly increase requirements for library holdings or other media resources. Materials to support the software engineering course have already been purchased through a 2003 grant from the National Collegiate Inventor’s and Innovator’s Alliance, 2003-2004 Parent’s Book Fund grant, and private donations. CS Curriculum Proposal 2016-02-16 page 8 of 10 10. Appendices 10.1. References ABET Computing Accreditation Commission. Criteria for Accrediting Computing Programs. ABET, 2003. http://www.abet.org/criteria.html ACM/IEEE-CS Joint Task Force on Computing Curricula. Computing Curricula 2001. Journal of Education Resources in Computing (JERIC) 1(3) 2001. http://www.computer.org/education/cc2001 Committee on Undergraduate Biology Education. BIO 2010: Transforming Undergraduate Education for Future Research Biologists. National Academies Press, 2003 Davis, et al. IS 1997: Model Curriculum and Guidelines for Undergraduate Degree Programs in Information Systems. Association of Information Technology Professionals, 1997. http://www.aisnet.org/Curriculum/ Gibbs and Tucker, A model curriculum for a liberal arts degree in computer science, Communications of the ACM 29(3):202-210, 1986. Gorgone, et al. IS 2002: Model Curriculum and Guidelines for Undergraduate Degree Programs in Information Systems. Association for Information Systems, 2002. http://www.aisnet.org/Curriculum http://www.is2002.org Tucker, et al. Computing Curricula 1991. Association for Computing Machinery and the Computer Society of the Institute of Electrical and Electronics Engineers, 1991. http://www.computer.org/education/cc1991 Walker and Schneider, A revised model curriculum for a liberal arts degree in computer science, Communications of the ACM 39(12):85-95, 1996. 10.2. Relevant Societies Accreditation Board for Engineering Technology http://www.abet.org Association for Information Systems http://www.aisnet.org Liberal Arts Computer Science Consortium http://www.cs.hope.edu/lacs CS Curriculum Proposal 2016-02-16 page 9 of 10 10.3. Computing Curricula 2001 Body of Knowledge The following listing is adapted from Appendix A in CC 2001. It organizes the Computer Science body of knowledge into a set of areas, each containing individual topics. The numbers in parentheses identify core topics essential for any undergraduate CS student, and represent the minimum number of hours required to cover this material in a lecture format. Other topics are considered elective. DS. Discrete Structures (43 core hours) DS1. Functions, relations, & sets (6) DS2. Basic logic (10) DS3. Proof techniques (12) DS4. Basics of counting (5) DS5. Graphs & trees (4) DS6. Discrete probability (6) PF. Programming Fundamentals (38 core hours) PF1. Fundamental programming constructs (9) PF2. Algorithms & problem-solving (6) PF3. Fundamental data structures (14) PF4. Recursion (5) PF5. Event-driven programming (4) AL. Algorithms & Complexity (31 core hours) AL1. Basic algorithmic analysis (4) AL2. Algorithmic strategies (6) AL3. Fundamental computing algorithms (12) AL4. Distributed algorithms (3) AL5. Basic computability (6) AL6. The complexity classes P & NP AL7. Automata theory AL8. Advanced algorithmic analysis AL9. Cryptographic algorithms AL10. Geometric algorithms AL11. Parallel algorithms AR. Architecture & Organization (36 core hours) AR1. Digital logic & digital systems (6) AR2. Machine level representation of data (3) AR3. Assembly level machine organization (9) AR4. Memory system organization & architecture (5) AR5. Interfacing & communication (3) AR6. Functional organization (7) AR7. Multiprocessing & alternative architectures (3) AR8. Performance enhancements AR9. Architecture for networks & distributed systems OS. Operating Systems (18 core hours) OS1. Overview of operating systems (2) OS2. Operating system principles (2) OS3. Concurrency (6) OS4. Scheduling & dispatch (3) OS5. Memory management (5) OS6. Device management OS7. Security & protection OS8. File systems OS9. Real-time & embedded systems OS10. Fault tolerance OS11. System performance evaluation OS12. Scripting NC. Net-Centric Computing (15 core hours) NC1. Introduction to net-centric computing (2) NC2. Communication & networking (7) NC3. Network security (3) NC4. The web as client-server computing (3) NC5. Building web applications NC6. Network management NC7. Compression & decompression NC8. Multimedia data technologies NC9. Wireless & mobile computing PL. Programming Languages (21 core hours) PL1. Overview of programming languages (2) PL2. Virtual machines (1) PL3. Introduction to language translation (2) PL4. Declarations & types (3) PL5. Abstraction mechanisms (3) PL6. Object-oriented programming (10) PL7. Functional programming PL8. Language translation systems PL9. Type systems PL10. Programming language semantics PL11. Programming language design HC. Human-Computer Interaction (8 core hours) HC1. Foundations of human-computer interaction (6) HC2. Building a simple graphical user interface (2) HC3. Human-centered software evaluation HC4. Human-centered software development HC5. Graphical user-interface design HC6. Graphical user-interface programming HC7. HCI aspects of multimedia systems HC8. HCI aspects of collaboration & communication GV. Graphics & Visual Computing (3 core hours) GV1. Fundamental techniques in graphics (2) GV2. Graphic systems (1) GV3. Graphic communication GV4. Geometric modeling GV5. Basic rendering GV6. Advanced rendering GV7. Advanced techniques GV8. Computer animation GV9. Visualization GV10. Virtual reality GV11. Computer vision CS Curriculum Proposal 2016-02-16 page 10 of 10 IS. Intelligent Systems (10 core hours) IS1. Fundamental issues in intelligent systems (1) IS2. Search & constraint satisfaction (5) IS3. Knowledge representation & reasoning (4) IS4. Advanced search IS5. Advanced knowledge representation & reasoning IS6. Agents IS7. Natural language processing IS8. Machine learning & neural networks IS9. AI planning systems IS10. Robotics IM. Information Management (10 core hours) IM1. Information models & systems (3) IM2. Database systems (3) IM3. Data modeling (4) IM4. Relational databases IM5. Database query languages IM6. Relational database design IM7. Transaction processing IM8. Distributed databases IM9. Physical database design IM10. Data mining IM11. Information storage & retrieval IM12. Hypertext & hypermedia IM13. Multimedia information & systems IM14. Digital libraries SP. Social & Professional Issues (16 core hours) SP1. History of computing (1) SP2. Social context of computing (3) SP3. Methods & tools of analysis (2) SP4. Professional & ethical responsibilities (3) SP5. Risks & liabilities of computer-based systems (2) SP6. Intellectual property (3) SP7. Privacy & civil liberties (2) SP8. Computer crime SP9. Economic issues in computing SP10. Philosophical frameworks SE. Software Engineering (31 core hours) SE1. Software design (8) SE2. Using APIs (5) SE3. Software tools & environments (3) SE4. Software processes (2) SE5. Software requirements & specifications (4) SE6. Software validation (3) SE7. Software evolution (3) SE8. Software project management (3) SE9. Component-based computing SE10. Formal methods SE11. Software reliability SE12. Specialized systems development CN. Computational Science (no core hours) CN1. Numerical analysis CN2. Operations research CN3. Modeling & simulation CN4. High-performance computing