Reviewers' Notebook: The Computer Science Curriculum: Proposed Revisions

From CSWiki

Jump to: navigation, search

The department formulated this proposal for revising the requirements for the computer science major in a curriculum workshop in June 2007.

Contents

Revised major requirements

We propose new requirements for the computer science major as follows.

  • CSC 151 Functional Problem Solving [new title]
  • CSC 161 Imperative Problem Solving and Data Structures [replaces 201]
  • CSC 207 Algorithms and Object-Oriented Design [replaces 152]
  • An under the hood course (CSC 211 Architecture or CSC 213 Operating Systems) [unchanged]
  • A course that covers development methodology and includes a large team project (CSC 223 Software Design or CSC 225 Databases and Web Applications Design)
  • An upper-level algorithms course (CSC 301, Analysis of Algorithms) [new title]
  • An upper-level programming languages course (CSC 302 Programming Language Concepts or CSC 362 Compilers)
  • An upper-level theory course (CSC 341 Automata, Computational Complexity, and Formal Languages) [unchanged]

Computer Science 153 and an additional Computer Science course may substitute for Computer Science 151 and 207.

Because it is a prerequisite for CSC 301 and CSC 341, computer science majors will still be required to take MAT 218 Combinatorics and its prerequisites, currently two semesters of calculus (including multivariable calculus) and one semester of linear algebra.

Revisions to the introductory sequence

In the new introductory sequence, students would still begin with a course in functional problem solving in Scheme (CSC 151). The second course (CSC 161) will focus on imperative problem solving in C, with a focus on pointers, memory management, and data structures. The third course (CSC 207) will focus on object-oriented design in Java and begin to look at algorithm analysis in greater depth. Relative to the current curriculum, this would reverse the order of the object-oriented and imperative paradigms. We would also greatly reduce the coverage of formal program verification methods from the imperative programming course and go into greater depth on object-oriented design.

These changes respond to several concerns.

  1. The current CSC 152 must cover both the imperative and object-oriented paradigms. By reversing the order of the courses, students learn only one paradigm at a time.
  2. There is an argument that having implemented data structures in C will better equip students to appreciate the strengths of the object-oriented paradigm, as well as Java's standard library implementations of those data structures.
  3. The prerequisite for CSC 223 (Software Design) is currently CSC 152 or 153, which many students complete during their first year. Thus, CSC 223 is taken by many students in their second year, as well as juniors and seniors. This difference in maturity makes it difficult to pitch the course at an appropriate level, and especially difficult to form effective project teams. Placing the object-oriented paradigm third in the introductory sequence ensures that the development methodology course is taken mainly by juniors and seniors.
  4. Students report that formal program verification (with the Gries textbook) has been a particularly difficult and unpopular section of CSC 201. We reluctantly acknowledge that students at this level may be better served by focusing on the most basic aspects of this topic: preconditions, postconditions, and loop invariants.

However, this change leaves uncertain the status of CSC 153, currently an accelerated course that covers both Scheme and Java. Students who have taken the AP exam in computer science should be familiar with material from CSC 151 (programming basics), CSC 161 (imperative style and C-like syntax), and CSC 207 (basic object-oriented programming). However, there will also be unfamiliar material in each course: the functional paradigm of Scheme, pointers and memory management in C, new data structures, and basic algorithmic analysis. Should an accelerated course cover material from 151 and 161? Or from 151 and 207? Or would another solution be more effective?

Revisions to core requirements

Team project requirement

The curriculum currently requires a team project course: either CSC 223 Software Design or CSC 362 Compilers. Some respondents to the alumni survey (see Appendix F) wished they had learned more about software development methodology or indicated they failed to complete the project in the Compilers course due to lack of this knowledge. Therefore, the proposed curriculum requires a course that covers development methodology along with the large team project.

We still wish to give students a choice of ways to meet this requirement. However, CSC 362 has not been offered in recent years, and it would not fulfill the requirement of covering development methodology. Furthermore, several of the alumni surveyed wished they had learned about databases; a few others mentioned an interest in web technology. Thus, we propose the addition of a new course, CSC 225 Databases and Web Application Design, that will fulfill the methodology and team project requirement. CSC 223 would focus on more traditional object-oriented applications and greater depth in object-oriented design.

Programming languages requirement

In order to provide students with an additional choice in the core curriculum, we propose that the programming languages requirement may be filled not only by CSC 302 Programming Language Concepts, but also CSC 362 Compilers. Where CSC 302 considers the theory and design of programming languages, CSC 362 would provide students with a more nuts-and-bolts experience, also directly tying automata theory to the design and implementation of programming languages. These two courses would be offered in alternating years.

New electives

We currently plan to regularize a course on Human-Computer Interaction. This course in Davis's area of specialization will be taught as a special topics class this spring. Regularizing this course is supported by interest in design and user interfaces expressed in the survey of major alumni. The field of Human-Computer Interaction is quite interdisciplinary; we believe the course can be taught with relatively few prerequisites to better attract non-majors.

Where two classes fill a requirement (for example, Software Design and the new course on Databases and Web Application Design), students may take the second class as an elective.

Descriptions of new and significantly changed courses

151 Functional Problem Solving (Fall and Spring) 4 credits

A lab-based introduction to basic ideas of computer science, including recursion, abstraction, scope and binding, modularity, the design and analysis of algorithms, and the fundamentals of programming in a high-level, functional language. Includes formal laboratory work. Prerequisites: None. STAFF.

161 Imperative Problem Solving and Data Structures (Fall and Spring) 4 credits

A continuation of Computer Science 151, bringing in some concepts more closely tied to the architecture of computers, compilers, and operating systems, such as macro processing, compilation and linking, pointers and memory management, data representation, and software development tools. Additional topics include assertions and invariants, data abstraction, linked data structures, an introduction to the use of the GNU/Linux operating system, and programming in a low-level, imperative language. Includes formal laboratory work. Prerequisite: Computer Science 151. STAFF.

207 Algorithms and Object-Oriented Design (Spring) 4 credits

An introduction to the ideas and practices that characterize the object-oriented model of computation: message passing, information hiding, classes and interfaces, inheritance, polymorphism, and reflection. The course also includes data structures and the associated algorithms, packages and libraries, exceptions, and the use of an integrated software-development environment. Prerequisite: Computer Science 161. STAFF.

223 Software Design* (Spring) 4 credits+

Study of software life cycle and its consequences. Consideration of principles and patterns for object-oriented software design. Emphasis on design, coding, testing, and documenting of large software packages through work on a large project. Prerequisite: Computer Science 207 or permission of instructor. STAFF.

225 Databases and Web Application Design* (Fall) 4 credits+

Study of database theory and design along with software development methodology. Emphasis on design principles and methods, project management, and the use of appropriate tools. A large project provides motivation and practical experience. Prerequisite: Computer Science 207 or permission of instructor. STAFF.

232 Human-Computer Interaction (Spring) 4 credits+

The field of HCI addresses two basic questions: How do people interact with computers? How can computer systems enhance rather than detract from the human experience? This course's primary focus is user-centered design: methods and principles for the design and evaluation of user interfaces that are useful and usable rather than frustrating. Students will learn core methods such as user and task analysis, prototyping, and usability testing through laboratory exercises and a significant team project. Other topics include key findings from cognitive and social psychology and the social implications of design. Prerequisite: Computer Science 151. DAVIS.

Revisions to prerequisites

Prerequisites for core and elective courses would be revised as follows. We also include a diagram of all prerequisites.

Course(s) Prerequisites
CSC 211 Architecture and CSC 213 Operating Systems CSC 161
CSC 223 Software Design and CSC 225 Databases and Web Application Design CSC 207
CSC 261 Artificial Intelligence CSC 161
CSC 301 Analysis of Algorithms CSC 207 and MAT 218
CSC 302 Programming Language Concepts
CSC 341 Automata, Formal Languages, and Computational Complexity CSC 161 and MAT 218
CSC 362 Compilers CSC 207
CSC 364 Networks CSC 211 or 213

Scheduling Course Offerings

We propose that the following courses be offered in a two year rotation in the given sequence: 362, 223 , 225, 302. For the full schedule of offerings, see Appendix I.

By offering courses that meet two of the requirements both in spring and fall, this schedule does not force students who go abroad during their junior year to "triple up" during one semester of their senior year. For a demonstration, see the sample 4-year plans.

Personal tools