Computer Science Proposal

advertisement
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
Download