CS105: Introduction to Computer Programming: C++

When: Wednesdays 2-3:30pm, January 20th to March 31st
Where: WEL 2.256
Instructor: Jennifer Sartor
Email: jbsartor@cs.utexas.edu
Office Hours: Monday afternoon 3:30-4:30 in the new ENS Intel lab (located in the basement of the ENS building, right across from the elevators, room 1), or by appointment
Prerequisites: CS307, CS313E, or EE322C with a grade of at least C, or permission of the instructor
Books:
(recommended, not required)
Mailing List: Class Mailing List

Course Announcements

Schedule

This is an ambitious schedule -- we may have to shift some content around as the semester progresses. We cannot cover all of C++, this class is only an introduction. It is better if you have an understanding of object-oriented programming, and experience with some procedural language. We will try to cover of C++: basic syntax, I/O, functions and argument passing, arrays, references, pointers, classes, friends, dynamic memory management, operator overloading, inheritance, polymorphism with virtual functions and dynamic binding, and generic programming with templates.

Date Book Chapter(s) Material Assignments
1/20 1, 2, 4, 5, 6 Introduction, and simple programs basic, basicFuncDefault, basicStatic, in C++
1/27 6, 7 Parameter Passing, Arrays A1: Decipher: due NOON Feb 2
2/3 8 Pointers A2: GameofLife: due NOON Feb 9
2/10 8,10,3,9 Pointers, Dynamic Allocation and start Classes A3: GameofLife again: due NOON Feb 16
2/17 3,9,10 Classes and Objects A4: Date object due NOON Feb 23
2/24 10,11 Friends and Operator Overloading A5: Overloading Date Operators due NOON Mar 2
3/3 11,12 Inheritance A6: Pairing Hands due NOON Mar 11 NEW: REDO due noon Mar 29
3/10 10,11,12,13 Polymorphism and Virtualness A7: Abstract Game of Life due NOON Apr 5 (UPDATED)
3/17 None. Spring Break Relaxation. Have fun.
3/24 8,14,16,21,22,25 Templates, OO Stuff, Extra
3/31 ALL Review with Jeopardy!

Course Overview

This purpose of this course is to provide some exposure to the C++ programming language. We will try to cover of C++: basic syntax, I/O, functions and argument passing, arrays, references, pointers, classes, friends, dynamic memory management, operator overloading, inheritance, polymorphism with virtual functions and dynamic binding, and generic programming with templates.

Prerequisites

The course prerequisites are listed above. If you're unsure if you've programmed enough to take this course, talk to me after class or via email.

Grading

The main work that you'll have to do for this course consists of 7 programming assignments, because this class is focussed on learning a programming language. Programming assignments will be done individually (by yourself, not pair programming) and be worth 83% of your grade. In lieu of tests, in-class quizzes will be given periodically to test your knowledge of what we have been covering. Quizzes will contribute 17% of your grade, so make sure to attend classes.

Your assignments will be evaluated on correctness, clarity, and style. Regardless of your overall average, to pass this class you will need to submit working versions of all 6 programming assignments. A program is considered to be working if and only if it compiles and executes without error. It should also pass the basic test drivers provided with each assignment. Don't underestimate style and documentation which will be approximately 15% of each programming assignment.

Due to the numerous issues regarding incompatibility between compilers, operating systems, file formats, etc., on different computer systems, students are strongly advised to do all of their program development on a UNIX machine. It is the student's responsibility to ensure that their projects both compile and run on the standard CS UNIX machines where they will be graded. All students are eligible to recieve a UNIX account if they do not already have one. Please see the instructor if there is a problem. Programming assignments will be turned in with the unix-based turnin. The last assignment turned in by the deadline is the one that will be graded. Your instructor reserves the right to regrade the entirety of any quiz or project if it is submitted for regrading. This could result in a lower score for coursework submitted for specious reasons.

Late Work Policy

Assignments will be typically due on Tuesdays at noon. Late assignments will not be accepted (I will give 10 minutes slack time). You are allowed 2 late days (each 24 hours) called "mulligans" during this semester to deal with emergencies. You must notify me ahead of the turnin time that you intend to take mulligan time. You can take both days on 1 assignment, or 1 day on each of 2 assignments.

Academic Honesty

You are required to do your own work. Don't copy code. It's okay to talk about general concepts or algorithms, but don't share pseudocode or code. You can talk about problems you are having on assignments, but do not show code to classmates to get debugging help. Either use debugging tools or ask the instructor for more specific help. The best way to do this is to avoid talking to others about the program while you are at the computer. If you have questions on what constitutes cheating or questions about this policy, please talk to the instructor.

Any cheating that I catch I have to report to the university, and will result in failing the class. It's totally not worth it for a 1-credit class like this. If you find yourself in a bind, email me and we'll work something out.

Resources

Acknowledgements

Parts of this course were adapted from or inspired by the CS105 courses of Nate Kohl and Maria Jump, with additional thanks to Greg Kuhlmann.