The course is based on the IEEE/ACM Computing Curriculum course CS 111i from http://www.acm.org/sigcse/cc2001/111I.html. The description for that course states:
Introduces the fundamental techniques of programming as a foundation for more advanced study of computer science. Considerable attention is devoted to developing effective software engineering practice, emphasizing such principles as design, decomposition, encapsulation, procedural abstraction, testing, and software reuse. Topics include standard programming constructs, problemsolving strategies, the concept of an algorithm, and fundamental data structures (strings, arrays, and records) along with an introduction to machine representation, and graphics.By the end of the semester, you will be able to design, implement and test programs that solve problems involving small collections of data, simulations of realworld objects, or the manipulation of pictures and other graphical objects. Some of the problems that you actually work on will be constructed specifically to teach concepts, but as much as possible, the problems will be taken from realworld applications.
The instructors will hold weekly evening help sessions at a time and place to be announced.
I expect and encourage discussion among students, particularly discussion about the design and testing stages of solving problems. I also encourage you to visit me or the TAs to discuss your work each week.
Students average about 8 hours per week of work outside the class to prepare for quizzes/exams and to do the homework; however, there is a lot of variation. Some students may spend as much as 16 hours per week outside of class. If you find yourself spending too much time, then you are expected to immediately come see Michael. In general: Don't spend more than about 30 minutes working on something without making progress. Once you get to that point, there is often some small technical detail that you've misunderstood, so it is best to come see one of the instructors.
A midterm grade and final course grade will be assigned on an absolute scale:
If you need to miss a lecture or recitation or you need a homework extension because of other committments, you must contact Michael at least one week ahead of time. If you miss a lecture quiz, then that will count as one of your three lowest scores (which are not part of your grade). Other missed work will receive a zero unless you have made arrangements aheead of time.
Date  Topic  Assignments and Links 
1. Week of Jan 15  
Tuesday Lecture  A First Sample Program 

Wednesday Recitation  Lab 1: Compiling and Running Programs  
Thursday  Variables and Assignments
Input and Output Data Types Arithmetic Expressions  
2. Week of Jan 22  
Tuesday Lecture  Short Daily Quiz: Arithmetic Expressions
Review Assignment Statements Boolean Expressions Warning: == vs = IfStatements IfElseStatements 

Wednesday Recitation  Lab 2: Using the Debugger  
Thursday  A Hand Quiz
Review Simple Branching Sample Program: Quadratics Discussion: Bits and Bytes Last Minute Homework Questions  
3. Week of Jan 29  
Tuesday Lecture  Short Daily Quiz: Boolean Expressions
While Loops Increment and Decrement Operations Sample Programs: Loops 

Wednesday Recitation  Lab 3: Loops and BGI Graphics  
Thursday  More WhileLoop Examples
Review of the Recitation A Graphics Program to Calculate Pi A Program to Find the Moose Quiz Coming on Tuesday: While Loops, Invariants Stump the Prof!  
4. Week of Feb 5  
Tuesday Lecture  Principles of Loop Design
Short Daily Quiz: While Loops Priming the Loop Loop Invariants


Wednesday Recitation  Practice for Next Week's Programming Quiz on Chapter 3  
Thursday  Widening Our Input and Loop Experience
Catching Bad Input and Giving the User Another Chance DoWhile Loops For Loops Nested Loops Example: Coloring the graphics screen What Kind of Loop to Use Loops That Read Input  
5. Week of Feb 12  
Tuesday Lecture 
Short Daily Quiz: For Loops A Little More Practice for the Lab Quiz Discussion of Next Homework: The Mandelbrot Fractal Introduction to ProgrammerDefined Functions 

Wednesday Recitation  Programming Quiz on Loops and Nested Loops  
Thursday  Detailed Look at ProgrammerDefined Functions
Color Program  
6. Week of Feb 19  
Tuesday Lecture  First Exam  
Wednesday Recitation  Lab 4: More on Functions  
Thursday  Void Functions and Reference Parameters
More Practice at Writing Functions  
7. Week of Feb 26  
Tuesday Lecture  Quiz on Writing Functions at the Class Start
This quiz also counts toward grade improvement in Exam 1  
Wednesday Recitation  Code Review for the Fractal Homework  
Thursday  Quiz on Writing Functions at the Class Start
This quiz also counts toward grade improvement in Exam 1 Program Design Example: The Lander Program  
8. Week of Mar 5  
Tuesday Lecture  Introduction to Arrays
Continuation of the Lander Example 

Wednesday Recitation  Practice for next week's lab quiz  
Thursday  More Practice Writing Array Functions
Continuation of the Lander Example  
9. Week of Mar 12  
Tuesday Lecture  Quiz on Writing Functions at the Class Start
This quiz also counts toward grade improvement in Exam 1 Introduction to Structs Discussion of the Bird Homework Start Another Programming Example (Snake Game) 

Wednesday Recitation  Lab Quiz: Functions to manipulate arrays  
Thursday  Quiz on Writing Functions at the Class Start
This quiz also counts toward grade improvement in Exam 1 Continuation of Snake Game  
10. Week of Mar 19  
Tuesday Lecture 
 
Wednesday Recitation 
 
Thursday  Review for the Exam
Stump the Prof  
11. Week of Apr 2  
Tuesday Lecture  Second Exam 

Wednesday Recitation  Practice for Third Lab Quiz  
Thursday  Controlling a CD Player
Sample Audio Program  
12. Week of Apr 9  
Tuesday Lecture  Reading and Writing Files
File Dialogs Example File Programs Maps Phonebook Program Answers to Last Week's Practice 

Wednesday Recitation  Third Lab Quiz  
Thursday  
13. Week of Apr 16  
Tuesday Lecture  Operation Overloading, Matrixes and 2D Graphics 

Wednesday Recitation  File I/O Exercise  
Thursday  3D Graphics  
14. Week of Apr 23  
Tuesday Lecture  Exception Handling 

Wednesday Recitation  Part I: Vectors  
Thursday  Third Exam  
15. Week of Apr 30  
Tuesday Lecture  Suzanne's Lecture 

Wednesday Recitation  Part II: Vectors  
Thursday  Programming with the .NET Framework
Semester Review  
Finals' Week  
Comprehensive Final Exam at 7:30am on Thursday, May 10 
Michael Main (main@colorado.edu) 
