CSC 151, CSC 161, and CSC 207 — the three courses in Grinnell's multi-paradigm, introductory computer science sequence — have been recognized as "exemplar courses" by the ACM/IEEE-CS Task Force on Computing Curricula 2013.
CSC 151 is the first course in our multi-paradigm introductory sequence. Students develop basic facility with designing, implementing, and analyzing algorithms using a functional programming language (typically a variant of Scheme). For the past two decades we have been teaching our first class using a form of the flipped classroom - students read materials in advance of class and then spend class time working with a partner on a set of problems, with the instructor and class mentor providing advice and asking questions.
Starting in 2007, CSC 151 has focused on image computation as its domain for problem solving. That is, students write programs that make images using one of a variety of image-making paradigms, some imperative, some pure functional, some object-oriented.
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. Variable topic course. Includes formal laboratory work.
The department maintains a page of current and past course offerings.
Computer Science Curricula 2013 (CS2013), national curricular recommendations from the ACM/IEEE-CS professional societies, identify an extensive list of learning outcomes for undergraduate computer science programs. Upon completing CSC 151, students should achieve the following learning outcomes with the specified level of mastery:
Knowledge Unit | Learning Outcome with [Level of Mastery] |
Algorithmic Strategies |
|
Fundamentals |
|
Processing |
|
Basics of Counting |
|
Fundamental Concepts |
|
Basics Rendering |
|
Defensive Programming |
|
Functional Programming |
|
Algorithms and Design |
|
Fundamental Programming Concepts |
|
Fundamental Data Structures |
|
Development Methods |
|
Social Context |
|
CSC 312 is a proposed new course in Grinnell's computer science curriculum. It will be a two-credit course that replaces our existing CSC 302, Programming Languages, and CSC 362, Compilers.
Because our multi-paradigm introductory sequence covers many of the core topics in a traditional programming languages course, the new CSC 312 will focus on the implementation of programming languages, primarily through interpretation. It will include some study of syntax (regular expressions and BNF-style grammars) and semantics. It will likely cover the first half of Friedman and Wand's Essentials of Programming Languages.
No current offering
Forthcoming: Learning outcomes from Computer Science Curricula 2013
No previous offerings.
CSC 151, CSC 161, and CSC 207 — the three courses in Grinnell's multi-paradigm, introductory computer science sequence — have been recognized as "exemplar courses" by the ACM/IEEE-CS Task Force on Computing Curricula 2013.
CSC 207 is the third course in Grinnell's introductory computer science sequence and serves as the core gateway
course to the majors. Students develop and analyze core data types (lists, stacks, queues, heaps, trees) and algorithms (primarily sorting and searching). Students also develop facility with object-oriented design. We use the Java programming language.
Starting in Fall 2013, CSC 207 has an experimental theme of Computing for Social Good. Students will work with free and open source projects that relate to the primary content of the course. We will leverage the Android platform for some of this development.
An introduction to the ideas and practices 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. Includes formal laboratory work.
Coming Soon
Coming Soon
The department maintains a page of current and past course offerings.
Computer Science Curricula 2013 (CS2013), national curricular recommendations from the ACM/IEEE-CS professional societies, identify an extensive list of learning outcomes for undergraduate computer science programs. Upon completing CSC 161, students should achieve the following learning outcomes with the specified level of mastery:
Knowledge Unit | Learning Outcome with [Level of Mastery] |
Basic Analysis |
|
Algorithmic Strategies |
|
Fundamental Data Structures and Algorithms |
|
Advanced Data Structures Algorithms and Analysis |
|
Fundamentals |
|
Processing |
|
Graphs and Trees |
|
Defensive Programming |
|
Data Modeling |
|
Object-Oriented Programming |
|
Functional Programming |
|
Basic Type Systems |
|
Advanced Programming Constructs |
|
Algorithms and Design |
|
Fundamental Programming Concepts |
|
Fundamental Data Structures |
|
Development Methods |
|
Requirement Engineering |
|
Software Design |
|
Software Construction |
|
Software Verification Validation |
|
Cross-Layer Communications |
|
Social Context |
|
Professional Ethics |
|
Professional Communication |
|
Grinnell's computer science curriculum has several special strengths, including:
Computer science recognizes at least four problem-solving approaches as being fundamental to work in the discipline. Each approach involves a distinct way of thinking, and each is supported by a range of computer languages. These paradigms may be outlined as follows:
Since different approaches have advantages for different problems, people involved with computing should be comfortable with several of these paradigms.
Grinnell's introductory courses provide students with considerable practice and insight for each of these approaches early in the curriculum, introducing the functional, object-oriented, and imperative paradigms.
Grinnell's curriculum identifies both theory and systems as core areas, and the overall curriculum has achieved international recognition for four-year, undergraduate computer science programs.
People use computers because they can provide services and help in the solving of problems. Thus, many courses and much research throughout the College utilize various aspects of computing. The computer science curriculum includes two upper-level courses with a strong software-development orientation.
The computer science curriculum includes several electives, in addition to courses already mentioned. Students choose electives as well as foundational courses, as they work with their adviser about appropriate alternatives to support their interests and career goals. The following list of electives illustrates the range of topics offered regularly.
|
|