Computer Science: A First Course
Computer Science: A First Course is a fully interactive programming course for high school students. It teaches the programming language Scheme, the language of choice at many of the finest computer science universities around the world. The advanced material covered in this course includes boolean arithmetic and truth tables, recursion, numeric algorithms (from a simple number-theoretic perspective), data structures (lists, arrays and trees), object-oriented programming, and functional programming. Although covering such advanced topics, the course is written in a style and at a level that is easily accessible to high school students.
The course is self-contained, and provides an online Scheme interpreter that works via the browser - no additional software is needed.
Characters, Atoms and Lists
Data and Functions
A Visit from Outer Space
Characters and Atoms
Introducing Lists
Lists
Matching Parentheses
Atomic Elements and Data Expressions
Counting Parentheses
Decomposition Trees
Primitive Functions
Black Boxes
The First Machine
Machine Hook-Ups
A New Machine
Functions
List Construction
Predicate Functions
Review for Test 1
Test 1
Generators and If-Switches
Data Expression Generators
If-Switches
Problem Set 1
Functional Expressions
Variables
Functional Expressions
Evaluation
Expressions for Generators and Conditionals
Quote-Expressions
Cond-Expressions
Simplifying Cond-Expressions
Evaluating Cond-Expressions
Review for Test 2
Test 2
Derived Functions
Constructing New Functions
Making New Functions
Names for Derived Functions
Using Derived Functions
The Scheme Evaluator
Problem Set 2
Boolean Functions
Problem Set 3
Programming
Top-Down Programming
Review for Test 3
Test 3
Recursion
Lats
Trace Tables
Recursive Functions
Problem Set 4
Recursive Functions that Output Lists
Problem Set 5
Problem Set 6
Review for Test 4
Test 4
Numbers
The Scheme Library
Preserving your Definitions
Working with Numbers
Introducing Numbers
Problem Set 7
Exponentiation
Review for Test 5
Test 5
Data Structures
Introduction
Introduction to Data Structures
Global Variables
Arrays
Pairing Lists
Arrays
Problem Set 8
Review for Test 6
Test 6
Trees
Taxonomic Trees
Binary Trees
Ordered Binary Trees
Tree Sort
Problem Set 9
Review for Test 7
Test 7
Object-Oriented Programming
Introduction
Introducing Object-Oriented Programming
Sequencing Evaluations
Local Variables
Function-Valued Functions
Functions That Output Functions
Mixed Lambda-Expressions
Classes and Objects
Objects
Classes
Handling the Unexpected
Derivation and Inheritance
Making Objects That Can Change
Changing Bindings
Review for Test 8
Test 8
Procedures
Each student is assigned a principal IMACS instructor, and is given unlimited access to the curriculum for the registration period.
The principal instructor is available by phone or by email during regular business hours. Additionally, the principal instructor or other IMACS instructors are available via the online Help Desk, monitored seven days a week including evenings.
Students submit assignments and tests online. Scores for assignments and tests are accumulated into the student's online gradebook so that parents, students and instructors can monitor student progress.