CSCI 1300 - Spring 2007
Introduction to Computer Science
Syllabus and Information


Instructors

Textbook and Links

Prerequisites and Objectives

CSCI 1300 is the introductory course for computer science majors. Incoming students must be comfortable with high school algebra and should have little or no previous programming experience.

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, problem-solving 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 real-world 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 real-world applications.

Expectations and Work Load

During the course, you are required to attend two lectures (Tuesday and Thursday at 8am) and one recitation (Wednesday) each week.

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.

Homework, Quizzes and Exams

A midterm grade and final course grade will be assigned on an absolute scale:

Schedule
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 =
If-Statements
If-Else-Statements
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 While-Loop 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


Homework Notes:

  • How to use setw from <iomanip>
  • Using a static cast to convert double to int
  • One submission, must compile
  • Don't cut and paste your work into the text box! Submit only your .cxx file, please.
  • Do check your feedback from the TA, even if your score is perfect
  • Did you get a zero?
  • If you get stuck: Design the loop with a loop invariant
  • Functions are not yet required (except for main)
  • Checking for bad input not yet required
  • Extra Office Hour Today!
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
Do-While 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 Programmer-Defined Functions
Wednesday Recitation Programming Quiz on Loops and Nested Loops
Thursday Detailed Look at Programmer-Defined 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)
  • Fellows Review Session at 6pm on Monday, Mar 12, in ECCR 1B55.
  • Read about structs (Section 10.1 in the 6th Edition or Section 6.1 in the 5th Edition)
  • Continue Homework 4: Birds in Flight
  • Early Starter Homework Help from Michael: Thursday, Mar 15, 5pm in ECCR 831/832.
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
  • More Practice on Writing Functions for Struct Manipulations
  • 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
    • Optional Reading on Maps: Swction 18.2
    Wednesday Recitation Third Lab Quiz
    Thursday
    13. Week of Apr 16
    Tuesday Lecture Operation Overloading, Matrixes and 2D Graphics
    • Optional Reading on File I/O: Sections 6.1 to 6.3
    Wednesday Recitation File I/O Exercise
    Thursday 3D Graphics
    14. Week of Apr 23
    Tuesday Lecture Exception Handling
    • Wednesday Exam Review: 5-6pm in ECCR TBA
    • Optinal Reading on Exceptions: Chapter 16
    • Final Version of CD Program Due on Thursday, Apr 26
    Wednesday Recitation Part I: Vectors
    Thursday Third Exam
    15. Week of Apr 30
    Tuesday Lecture Suzanne's Lecture
    • Optional Reading on Vectors: Section 8.3
    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)