University Computer Science
The IMACS University Computer Science sequence emphasizes computational thinking with two fully interactive, self-paced, online programming courses. Both courses are entirely Web-based and self-contained with instant feedback, supportive instructors, and automatic grading of all work. Each course covers the equivalent of three university semester hours.
Due to the sophisticated and challenging nature of the curriculum, students must pass an online aptitude test before being accepted into any eIMACS course. Register for the free eIMACS Aptitude Test.
University Computer Science I
University Computer Science I, the first course in the sequence, has benefited individuals from talented secondary school students with no programming experience to advanced students who can code to working professionals seeking a deeper understanding of computing. UCS1 teaches the fundamental principles of computer science using Scheme, a programming language that has been used at many of the finest universities around the world. Scheme's expressive yet simple syntax enables students to focus on effectively learning advanced concepts that can be implemented easily in any programming language, from Python to Java to future languages not yet invented. UCS1 includes an online Scheme interpreter, interactive exercises, and Web-based exams.
IMACS is dedicated to providing talented students with an ability-matched education. Parents of prospective students with significant computer programming experience may wonder if UCS1 will be sufficiently challenging. Such parents should first have their child take the free eIMACS Aptitude Test and then speak with a senior IMACS instructor to help determine an appropriate course of action.
Explore sample pages from University Computer Science I.
Data and Functions
Introduction
Welcome
Characters and Atoms
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
A New Kind of Definition
Global Variables
Numbers
The Scheme Library
Preserving your Definitions
Working with Numbers
Introducing Numbers
Problem Set 7
Exponentiation
Problem Set 8
Review for Test 5
Test 5
Data Structures
Introduction
Introduction to Data Structures
Arrays
Pairing Lists
Arrays
Problem Set 9
Trees
Taxonomic Trees
Binary Trees
Ordered Binary Trees
Tree Sort
Problem Set 10
Review for Test 6
Test 6
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 7
Test 7
University Computer Science II
University Computer Science II is suitable for students who have successfully completed UCS1. UCS2 utilizes the Scheme, Haskell and Python programming languages to teach more challenging topics including advanced recursion concepts, ordering/sorting algorithms, infinite lists, list comprehension, function abstraction, and higher order functions. Coursework includes a small-scale database project in Haskell that deals with bus routes and a significant object-oriented programming project in Python that involves artificial intelligence in a game-playing context. In addition to the online Scheme interpreter, students also have access to an online Haskell evaluator and an online Python interpreter.
Students who successfully complete UCS2 have a better understanding of computer science than most college freshmen who have taken their university's introductory CS course. Because of this, IMACS UCS2 graduates are better prepared to succeed in upper-level university courses.
Course Overview
Introduction to University Computer Science II
Welcome
Numbers
Working With Numbers
Introduction
Working With Numbers Using Scheme
Introducing Rational Numbers
The Rational Number Data Type
Problem Set 1
Other Implementations of the Rational Numbers
Recursion
List Processing Beyond Iteration
Introduction
Problem Set 2
Simplifying by Relaxing Input Requirements
Problem Set 3
Types of Recursion
Introduction
Accumulators
Tail Recursion
Full Recursion
From Full Recursion To Tail Recursion
Mutual Recursion
Problem Set 4
Review and Test
Review for Test 1
Test 1
Numbers and Evaluation
Arithmetic Expressions
Introduction
Describing Arithmetic Expressions
Evaluating Arithmetic Expressions
Problem Set 5
Review and Test
Review for Test 2
Test 2
Division and the Rational Numbers
The Rational Numbers in Scheme
Division
Evaluation and Abstration
Introduction
Introduction to Evaluation
The Process of Evaluation
Evaluation
Evaluating Numerals, Booleans, and Variables
Evaluating Special Forms
The Special Forms and and or
Evaluating Applications
Abstration
Functions as Inputs
Function Abstraction
Problem Set 6
Review and Test
Review for Test 3
Test 3
Higher-Order Functions
Working with Functions
Introduction
Anonymous Functions
Curried Functions
Problem Set 7
Nested Lambda-Expressions
Review for Test 4
Test 4
Anonymous Functions in Action
Data Abstraction
The Special Form let
The Special Form let*
The Special Form letrec
Problem Set 8
Test 5
Haskell
Introduction to Haskell
A New Programming Language
Expressions, Lists and Tuples
Haskell Expressions
Infinite Lists
List Comprehensions
Tuples
Derived Functions
Haskell Derived Functions
Problem Set 9
Test 6
Project: Bus Routes
Introduction
Creating Itineraries
Finding Itineraries
What Next?
Python
Introduction to Python
And Now For Something Completely Different
Python Expressions
Sequence and Other Iterables
Lists, Strings, and Tuples
Ranges
Iterators
Python Basics
Variables and Assignments
Defining Functions
Looping
List Comprehensions
Slicing
Mapping and Filtering
Problem Set 10
Ordering and Sorting
Order
Introduction to Sorting
Selection Sort
Insertion Sort
Merge Sort
Quick Sort
Classes
Classes in Python
Some Useful Methods
Collections
Problem Set 11
Trees and Sorting
Dictionaries
Mini-project: A Two-pan Balance
Test 7
Artificial Intelligence
Introduction
Can Computers Learn?
The Game
The Game
Game Positions
Simple-minded Computer Players
Winning Moves
Problem Set 12
Smarter Computer Players
Quicker Computer Players
Expert Computer Players
Problem Set 13
Can You Beat the Computer?