The Introductory Computer Science Sequence at Grinnell College

Grinnell's introductory computer science sequence follows a multi-paradigm approach, emphasizing three fundamental approaches to problem solving, and supported by three contrasting programming languages. Each course in this three-course introductory sequence has been identified as an innovative and effective "Course Exemplar" in Computer Science Curricula 2013 (CS2013) by the ACM/IEEE-CS Joint Task Force on Computing Curricula.

The following table highlights additional perspectives for these three courses.

Course
Number
CSC 151 CSC 161 CSC 207
Title Functional
Problem Solving
Imperative
Problem Solving
and
Memory Management
Object-Oriented
Problem Solving,
Data Structures,
and Algorithms
View of
Problem
Solving
Functional
Problem
Solving
Imperative
Problem
Solving
Object-oriented
Problem
Solving
Supporting
Language
Scheme C Java
Application Themes Data science Robots Large-scale software development:
Memory and time effectiveness
Level of Abstraction High level Low-moderate level High level
Memory Allocation
  • automatic — handled by language
  • Program-requested memory allocation and deallocation
  • Program-requested allocation for high-level objects
    automatic deallocation — handled by language
Number Processing
  • Accurate, variable-size integers
  • Accurate rationals (built-in)
  • Fixed-precision reals
  • Fixed-size integers
  • Fixed-precision reals
  • Fixed-size integers
  • Fixed-precision reals
  • Option of user-defined numbers
Primary Built-in Data Structures
  • Lists
  • Vectors
  • Program-defined dynamic structures (e.g., trees)
  • Explicit declaration of variable types
  • Arrays (with no bounds checking)
  • Program-defined dynamic structures (e.g., lists, trees)
  • Explicit declaration of variable types
  • Arrays (with bounds checking)
  • Program-defined dynamic structures (e.g., lists, trees)
Additional Language Characteristics
  • Automatic data representation
  • Higher-order procedures
  • Minimal side effects
  • Generally considered a "safe" language
  • Heavy use of recursion (implemented efficiently)
  • Little automatic run-time checking
  • Programmer free to work directly at low level with data and structures
  • Generally considered a potentially "unsafe" language
  • Considerable run-time checking
  • Generally considered a "safe" language
  • Emphasis on encapsulation, abstraction

This document is available on the World Wide Web as

     http://www.walker.cs.grinnell.edu/intro-cs-sequence.html

created 16 January 2013
updated 18 January 2013, 15 January 2014
updated 20 January 2018, 26 August 2018
Valid HTML 4.01! Valid CSS!
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.

ccbyncsa.png

Copyright © 2011-2015 by Henry M. Walker.
This page is under development by Henry M. Walker.
This material is licensed under a Creative Commons Attribution-NonCommercial-Share Alike 4.0 International License.