Home Page for CIS 211

Instructor: Amr Sabry
GTF: Yolanda Reimer
GTF: Tobias Brick

Study Guide

Quiz II Solution
About Visitors
Quiz I Solution
Midterm Solution
Code from lectures
Java 1.1 API

Homeworks and Grades

Lab 8 Instructions
Lab 8 Solution
Lab 7 Instructions
Lab 7 Solution
Lab 6 Instructions
Lab 6 Solution
Factorial in Assembly
Lab 5 Instructions
Lab 5 Solution
Lab 4 Instructions
Lab 4 Solution
Lab 3 Instructions
Lab 3 Solution
Lab 2 Instructions
Lab 2 Solution
Lab 1 Instructions
Lab 1 Solution
Lab 0 Instructions
Lab 0 Solution
Extra Credit Problems

What is CIS 211 about?

The goal of this course is to introduce the field of computer science, its main subject areas, its recurring concepts, and its mathematical foundations. The central activities of the course relate to programming:

The Duck Machine

The lab component will apply the concepts you learn in lecture to one project, the Duck Machine. Each lab will address one part of the machine and will be self-contained. At the end of the term, all the labs can be combined with the supporting code that I provide to get a complete simulation of the machine.

The exercise of building the Duck Machine will serve several purposes:


The lectures will cover:

Date Topic Lab due
M 3/29 Introduction
W 3/31 Data as objects: Abstract Classes; Basic Inheritance
F 4/2 Duck Machine: Words
M 4/5 Duck Machine: ALU; Interfaces Lab 0: CIS 210 Review
W 4/7 Data as objects: Object instances
F 4/9 Data as objects: Exceptions are objects
M 4/12 Duck Machine: Memory Lab 1: ALU
W 4/14 Throwing and Catching Exceptions
F 4/16 Objects: Scope vs Lifetime
M 4/19 Review; Quiz Lab 2: Memory
W 4/21 Duck Machine: CPU and IO
F 4/23 Streams (API)
M 4/26 Duck Machine: Instructions; Interpreter Pattern Lab 3: IO
W 4/28 Advanced Inheritance: Types vs Classes
F 4/30 Midterm
M 5/3 Advanced Inheritance: Types vs Classes Lab 4: Instructions
W 5/5 Visitor Pattern
F 5/7 Visitor Pattern
M 5/10 Duck Machine: Putting it Together; Quiz Lab 5: Central Processing Unit, Interpreter
W 5/12 Review or Advanced Java Topic
F 5/14 Review or Advanced Java Topic
M 5/17 Recursion: Data as Objects again Lab 6: Machine
W 5/19 Recursion: Mathematical Foundations; Puzzles
F 5/21 Recursion: Binary Trees
M 5/24 Recursion: Iteration Lab 7: Advanced Machine
W 5/26 Recursion: Linked Lists
F 5/28 Recursion: Linked Lists
M 5/31 Memorial Day Lab 8: Recursion
W 6/2 Summary; Perspective; Future
F 6/4 Final Review; Teaching Evaluation
U 6/10 Final exam from 1:00 PM to 3:00 PM

Study Guide

This will be a difficult course. There will be a lot of material to help you but ultimately, the only way for you to learn is to work hard and for long hours to figure out solutions to problems by yourself.

A word of warning: This course does not follow one textbook. Instead there are three main sources of information: the lectures introduce programming concepts; the books are references for you to consult about specific points you want to understand in greater detail; and the labs put these concepts into practice.

I rarely hand out complete solutions to homework problems. Instead I am always available for questions: I will explain the underlying concepts as many times as needed, give hints to the solution, and encourage you to develop your own solutions.



All homeworks will be collected in class (on Mondays) and returned during your lab period. Your grade will be computed as follows:

Visited times since December 15, 1997 (or the last crash).