CS 105C: C++ Programming Fall 2019
Introduction #
Welcome to CS105C! This is an accelerated class which teaches the basics of the C++ Programming language, including the basic syntax, the object system, the C++ flavor of polymorphism and inheritance (which is somewhat distinct from the systems found in other languages), the template system, and a few “modern” C++ concepts including iterators, lambdas, smart pointers, and move semantics.
Upon course completion, you should be comfortable with reading and writing basic C++ code, understand how to deal with C++ errors, and know about most of the language’s most common constructs.
As you can see, the list of things we need to cover is quite long, and we have very little time. Therefore, this class will be much harder than a typical one-unit class. I do not intend to be unreasonable with the workload, but the unfortunate truth is that with a language as large as C++, you will need to do some work on your own time to have a hope of understanding it in a semester.
Class Information #
Instructor: Kevin Song (theksong@cs.utexas.edu)
Office Hours Time: Monday, 5:00-6:30, Tuesday 2:00-3:00
Office Hours Location: GDC 5.416
Class Location: GDC 5.302
Class Time: Monday 4:00pm-5:00pm
Course Schedule: see link
You will need to be able to access the lab machines to be able to test your code. To do this, you will need a CS account. If you are not a student in the CS department, request an account as soon as you have enrolled in the class so that you can log in to the lab machines.
Communication Routes #
The class website is on my UTCS webpage and will be used to post projects, lectures, and supplementary materials. This course will use Piazza as a class listserv and Canvas as an assignment submission/grading portal.
I will assume that any announcement sent on Canvas, Piazza, or directly to your email (either your CS account or your official school email) will be read within 24 hours. (See this policy for further details.) If you don’t feel like checking multiple websites, make sure your notifications are properly set up on Canvas and Piazza and check your email regularly.
You can set up email forwarding with your UTCS account if you don’t intend to check it on a regular basis.
Prerequisites #
Formal Prerequisites: CS 314(H), CS 313E, or EE 422C with a grade of C- or better.
Informal Prerequisites: You should be able to design, write, and debug a program to solve a non-trivial problem in your language of choice. A simple example would be to implement a text-based interface to Conway’s Game of Life, allowing a player to set up an initial state for the game and then showing them how the game progresses via a text interface.
You should also have at least a little experience with object-oriented programming, since we will be covering C++’s OOP facilities and I will not have time to teach the concepts from scratch.
Resources #
This course does not require any external materials–all assignments will be provided by the instructor. Additional printed and online resources for the curious student can be found on the resources page.
Course Format and Grading #
This class will be taught with 1 lecture a week, and regular weekly assignments that reinforce what was covered in lecture.
The grades in this class will be assigned based on three categories: projects, in-class quizzes, and participation.
The breakdown will be roughly as follows:
Category | Percent |
---|---|
Projects | 70% |
Quizzes | 20% |
Participation | 10% |
Projects (70%) #
Four projects, each worth a hair over 15% of the grade, plus a single miniproject right at the start of the semester. They may start out simple, but the difficult ramps up quite quickly (my estimation is that each project is roughly twice as difficult as the previous one).
There will be a total of three late days allowed across all projects. Once all late days are used, you will be penalized a flat 25% per day late. Any amount past the deadline counts as a full late day.
Example: Edsger turns in the last project 5 minutes after the deadline, having used up all three late days on previous projects. This project is one day late. The grade on the project without the penalty is a 90%. After the penalty is applied, Edsger will get a 65% for this project.
All projects must compile and run on the basement lab machines in GDC.
Quizzes (20%) #
There will be several in-class quizzes to test your understanding of the material.
Participation (10%) #
It won’t make or break your grade, but participation may tip the scales if you’re on the boundary between two grades. This will be assessed by short surveys during lecture.
Change of Grade #
If you think your grade was in error, you may email me with a grade change request. See the rules on requesting a regrade for more information.
Collaboration and Cheating #
In spite of the technological advances of the last 10,000 years, sometimes the best way to learn something is to sit down with a friend and just talk about ideas. You are encouraged to take part in this tradition. However, any work you submit for this class must be entirely your own.
In particular, you may not do any of the following:
- Copy code from StackOverflow or any other source, unless explicitly approved by the instructor
- Allow another student to look at your code
- Talk another student through the implementation of a function
- Provide answers for the homework/quizzes to anyone else
- Submit attendance for another student
The above list is not exhaustive.
A general rule (although not a catch-all) for staying on the right side of the rules is to never talk with someone else and work on your code at the same time. If you ever find yourself looking at someone else’s code while programming, you have crossed the line into cheating. If you’re discussing implementation details, both of you should have your computers and writing implements stowed away. After the discussion, wait a little bit (maybe go get a coffee) before continuing to work.
If you are uncertain about whether something is allowed, ask me.
The minimum penalty for any student caught cheating is a zero on the assignment, an additional reduction in final grade for the course, and referral to the Dean of Students, who will record the incident and may impose additional penalties. Repeat or flagrant violations may result in failure of the course.
Other #
Students with Disabilites #
Any student with a documented disability (physical or cognitive) who requires academic accommodations should contact the Services for Students with Disabilities area of the Office of the Dean of Students at 471-6259 (voice) or 471-4641 (TTY for users who are deaf or hard of hearing) as soon as possible to request an official letter outlining authorized accommodations. Students requesting accommodations for disabilities must notify the instructor by the 12th class day.
Religious Holy Days #
A student who is absent from an examination or cannot meet an assignment deadline due to the observance of a religious holy day may take the exam on an alternate day or submit the assignment up to 24 hours late without penalty, if proper notice of the planned absence has been given. Notice must be given at least 14 days prior to the classes which will be missed. For religious holy days that fall within the first 2 weeks of the semester, notice should be given on the first day of the semester. Notice must be personally delivered to the instructor and signed and dated by the instructor, or sent certified mail. Email notification will be accepted if received, but a student submitting email notification must receive email confirmation from the instructor.