Syllabus: CSC 121C, Computer Science I

 Location: Julian A040, MWF 2:45-3:50; Lab: Julian A112, Tu 10-11:40
 Home Page: http://www.csc.depauw.edu/~bhoward/courses/0203Spring/csc121/
 Professor: Brian Howard (bhoward@depauw.edu)
 Office: Julian A220, ph. 658-4120
 Office Hours: MWThF 10-11:30, TuWTh 4-5, or by appointment (or whenever my door is open)
Text:
Problems, Algorithms, Programs: A Laboratory Centered Introduction to Computer Science Using C++. You should bring the lab manual with you to all class and lab sessions.
Laboratory:
The lab atmosphere is a relaxed one, where interactions among students, and between student and instructor/lab assistants, are encouraged. It is an interactive learning environment to help you apply learned concepts, where questions and discussion are encouraged. However, in order for you to benefit, you must complete the labs and the prelab assignments as follows. Prelabs constitute one-half of your lab grade. In order to receive credit for prelab assignments, they are to be written out on paper and handed in at the beginning of lab. The actual lab itself constitutes the other half of your lab grade and must be completed no later than one week after its scheduled time. Your lab instructor, Corey Kovacs (ckovacs@depauw.edu, 658-4761, Julian A205) approves all deviations from this lab policy. Mr. Kovacs handles all administrative parts of the laboratory experience.
Student Assistants:
Student assistants will schedule consultations, one week prior to project due dates in the evenings. The assistants will write their names on the whiteboards in Julian A112, to indicate their presence.
Requirements:
A computer lab each week (10 require a prelab assignment to be completed before lab begins and handed in at the beginning of lab), 3 computer programming projects, 2 hour exams, 1 final exam, written homework, quizzes and/or assignments.
Grading:
15% for the first hour exam, 20% for the second hour exam, 25% for the final exam, 10% for the computer labs (including both the prelab assignments, and attending the lab and putting in a good-faith effort), 15% for computer projects, 15% for homework, quizzes and/or other assignments.
Final Grades:
The following scale will be used to compute your final grades: A (93-100), A- (90-92), B+ (87-89), B (83-86), B- (80-82), C+ (77-79), C (73-76), C- (70-72), D+ (67-69), D (63-66), D- (60-62), F (0-59).
Caveat:
You cannot learn to drive a car or to maintain friendships simply by listening to someone explain how to do it. Rather, you must practice, often making mistakes. The same is true of learning the material in this course. Feel free to ask as many questions as you want. It is my desire that you leave this course with a feeling of accomplishment and satisfaction gained from learning about a subject area that fascinates me.
Important Dates:
The deadline for withdrawing from class is 3/14. The three computer projects will be due during the weeks starting Monday 3/10, 4/7 and 5/5, respectively. The exams will be given in the evening to all sections of this course. The first hour exam will be given on Wednesday 3/5 at 7pm, and the second one will be on Wednesday 4/16 at 7pm. The second exam falls on the Jewish Passover holiday. If this is a religious conflict for you, please contact your instructor at least a week before the exam and an alternative exam time will gladly be arranged for you. The final exam for this section of the course is scheduled for Monday May 12, 1-4pm.
Important Information:
You must have taken UNIV101 or be qualified to enroll in your Q course in order to attempt this course. To earn ``Q-credit'' for this class, you must earn at least a C average on your exams (hour exams + final) and you must earn at least a C average in the class. CSC121 is a group one offering; CSC121 is not, however, a group one laboratory offering. There is no group one laboratory credit for this course.
Policy Statements:
 
Course Schedule:
 
Central Theme weeks 1 - 5: Computer Graphics
01/27 Course introduction. Algorithms: definition, design considerations. Introduction to C++; the programming environment, program format and sequential execution of statements, functions without parameters, computer graphics.
02/03 Problem solving; algorithm design continued; C++: simple data types, assignment, variables, using objects. Chapter 1 lab. Programming homework number one due on Friday.
02/10 Algorithm design continued; C++: text output, functions with value parameters, while loops, pre- and post-conditions for functions and loops. More practice with functions. Chapter 2 lab. Programming homework number two due on Friday.
02/17 Algorithm design continued; divide-and-conquer approach to problem solving, C++ topics: functions with reference parameters, text input, more about data types, simple class definitions, built-in functions. Chapter 3 lab. Your instructors will be attending their annual Computer Science conference part of this week.
02/24 Algorithm design continued; C++: if, if-else, switch, scope of variables, do-while loops. Chapter 4 lab. Programming homework number three due on Friday.
Central Theme weeks 6 - 9: Using the Computer for Simulation
03/03 Review. Lab: Exam 1 practice problem and Project 1 help. Exam 1: Wednesday, March 5, 7:00pm.
03/10 Probabilistic simulation, probability and random numbers. Statistics: generating and simple analysis; structured types: array; programmer-defined types; definite iteration revisited: for statement. Chapter 5 lab. Project 1 due this week. March 14: The last day to withdraw from this course with a W.
03/17 Data structures: the queue, including standard queue statistics; time-driven probabilistic simulations. Chapter 6 lab.
03/24 Spring break.
03/31 Functions that return values. Chapter 7 lab. Stage 1 of Project 2 due at start of lab.
Central Theme week 10: Computer Architecture
04/07 Computer architecture: the Central Processing Unit (CPU), Memory (RAM), Input/Output devices, variables as locations. Relationship of high-level language program to machine language. Architecture lab and Exam 2 practice problem--both distributed during lab time. Project 2 due this week.
Central Theme weeks 11 - 14: Managing Real World Complexity
04/14 Text files; file I/O; introduction to strings; creating test files using an editor. Lab: Exam 2 practice problem. Exam 2: Wednesday April 16, 7:00pm.
04/21 Character strings; manipulating arrays; creating an output file; searching. Chapter 8 lab.
04/28 Sorting; algorithm complexity; 2-dimensional arrays. Chapter 9 lab.
05/05 Problem solving and algorithm design continued; C++ review. Chapter 10 lab + help with project 3, if needed. Project 3 due this week.