CS105: Introduction to Computer Programming: C++

When: Tuesday and Thursdays 11-12pm, August 27th to October 15th
Where: SZB 278
Instructor: Jennifer Sartor
Email: jbsartor@cs.utexas.edu
Office Hours: Tuesdays 3:30-4:30pm, possibly Wednesdays 4-5 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
8/27 1, 2, 4, 5, 6 Introduction, and simple programs basic, basicFunc, basicFuncDefault, basicStatic, in C++
9/1 6, 7 Argument passing, references and const, intro to arrays Assignment #1: Intro to Game of Life
9/3 6, 7 More on arrays and functions
9/8 8 Pointers are fun! Assignment #2: Game of Life with Pointers, Vectors, and Dynamic Allocation
9/10 8,10 More pointers and dynamic allocation
9/15 3,9 Classes define objects Assignment #3: Objects: Date class
9/17 9,10 More on classes
9/22 10,11 Objects and friends Assignment #4: Operator Overloading with Date class
9/24 11 Operator overloading
9/29 11,12 Inheritance Assignment #5: Pairing Derived Hands
10/1 12,13 Polymorphism
10/6 13 All things virtual Assignment #6: Playing the Abstract Game of Life
10/8 11,14,25 OO Details
10/13 8,10,16,21,22,25 Random C++ Concepts
10/15 ALL above Wrap up

Resources

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 6 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 82% 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 18% 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 so submitted for regrading. This could result in a lower score for coursework submitted for specious reasons.

Late Work Policy

Assignments are typically due on Tuesday nights at 11:59pm. 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.

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.