CS105: Computer Programming: C++

When: MW 8-9am, January 19 to March 9, 2011
Where: PAI 3.14
Instructor: John Edwards
Email: edwardsj@cs.utexas.edu
Office Hours: Thursday 3-4pm in the ENS Intel lab Room 1, ENS basement
Office: North end of ACES 2.100 by the window
Prerequisites: CS307, CS313E, or EE322C with a grade of at least C
Book (required):
Accelerated C++ by Koenig and Moo
i>clicker (required):
i>clicker available at the CO-OP and online
Course website:
cs.utexas.edu/~edwardsj/teaching/2011spring/cs105/

Schedule

Date Reading Topic Assignments
Jan 19 --- Hello world program code  
Jan 24 1.1 - 1.2, 2.1 - 2.5 strings, control statements code  
Jan 26 3.2 vector code  
Jan 31 4.1 functions, references code assignment1 due 8:00am
Feb 2 4.2 - 4.5 struct, file structure code  
Feb 7 5.1 - 5.3 iterators code assignment2 due 8:00am
Feb 9 5.4 - 5.5 list code  
Feb 14 6.1, 6.4 generic algorithms code assignment3 due 8:00am *
Feb 16 8.1 - 8.2 generic functions code  
Feb 21 9.2 - 9.3, 9.5 classes code assignment4 due 8:00am *
Feb 23 10.1 - 10.3 pointers code  
Feb 28 10.4 - 10.6 file I/O, memory management code assignment5 due 8:00am *
Mar 2 13.1 - 13.2 Inheritance code  
Mar 7 14.1 - 14.2 Handles code assignment6 due 8:00am *
Mar 9   FINAL  

* Assignments 3-6 use additional files downloadable from here.

Course Overview

The purpose of this course is to provide some exposure to the C++ programming language. Topics we will cover are listed in the schedule. We will focus on proper use of C++ language constructs and idioms.

Grading

Type Number Points
Quizzes Best 10 10x4 = 40
Assignments 6 6x20 = 120
Final 1 1x40 = 40

Quizzes - We will have daily quizzes at the beginning of class (really). No quiz will be given the first or last day of class, making a total of 13 quizzes. The bottom 3 quiz scores will be dropped. The quizzes will be on the daily reading assignment. This doesn't mean that you must have a perfect understanding of everything you read. It just means that you need to have a grasp of what is being talked about, why it is important, etc. Quizzes cannot be made up.

Quizzes are given using the i>clicker, which allows you to electronically respond to the quiz questions. The clickers will also be used for in-class participation. You will need to get an i>clicker from the CO-OP or elsewhere by the second class day. You're welcome to buy a used i>clicker or even borrow one from a friend. You will register your clicker remote in class on the second class day. You are responsible for bringing your clicker remote to class every day.

Assignments - There will be one programming assignment per week, for a total of six. These assignments make up the majority (60%) of the grade. Correctness is only the first step in assignment evaluation. Just as important are clarity, brevity, style and comments. Always check your code against the coding guidelines before submitting.

Assignments are due on Mondays at 8:00am. No late assignments will be accepted. I strongly recommend getting the assignment done the Friday before it is due since I check e-mail very little on Saturdays and I don't check it at all on Sundays. Assignments are graded and returned on Wednesdays.

Assignments must compile and run on the CS UNIX machines. It is strongly advised that students do all of their program development on a Unix machine. Sign up for a CS Unix account if you don't have one already. Do this early because it often takes a couple of days to process and you won't be able to turn in any assignments until this account is active. Programming assignments will be turned in with the Unix-based turnin. The web-based turnin will not work. See the Resources section below for help if you're not familiar with Unix or turnin.

Final - A final will be given the last day of class and will be worth 20% of the final grade.

Blackboard - Scores will be maintained on Blackboard.

Late Work Policy

Again, late assignments are not accepted. Daily quizzes cannot be made up.

Academic Honesty

You are encouraged to discuss assignments with classmates, but you may not share, debug or look at someone else's code.

Resources