Introduction to Computer Programming: C++

When: Wednesdays 10:45 - 13:15 from 25th September to 13th November, 2013 (continuing to 18th December with GPU Programming)
Where: Howest in Kortrijk room GKG.B.1.17
Instructor: Jennifer B. Sartor
Email: jennifer.sartor@elis.ugent.be
GPU Instructors Ignace Saenen: ignace.saenen@ugent.be and Jonas Elsayehkhalil: jonas.elsayehkhalil@ugent.be
Books:
(recommended, not required)

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: basic syntax, I/O, functions and argument passing, arrays, references, pointers, classes, dynamic memory management, inheritance, polymorphism with virtual functions and dynamic binding, generic programming with templates, and possibly operator overloading.

Date Material Assignments
25 Sept Introduction with a basic C++ program, and starting on Arrays, parameter passing, and pointers, and try the following Exercises for practice. We also completed a hangman program in class. A0: Decipher, due Thursday, 10 October at 12:00 (noon)
2 Oct Dynamic allocation, function templates and classes, plus a constructor and destructor code example.
Do these exercises, and check your answers to the first set of exercises.
A1: GameofLife, due Thursday, 17 October at 12:00 (noon)
9 Oct More on Classes, plus an example with a Date class and a Member class.
Check your answers to exercises1.
A2: Library with Book and Student classes, due Thursday, 24 October at 12:00
16 Oct Classes with Inheritance, and we will define the Array class given the .h file. Here is the Array class that we defined.
A3: Pairing Hands, due Thursday, 31 October at 12:00
23 Oct Templates, Polymorphism and Virtualness. A4: Generic Set, due Friday, 8 November at 12:00
30 Oct GPU Stuff with Ignace. Continue Assignment 4.
6 Nov Friends, Operator Overloading, Makefiles, Function Pointers, and various concepts. and the array example we looked at in class. Finish assignment 4 and study for the exam using my Set solution.
13 Nov Final Test and Overview. Enjoy GPU programming!

Course Overview

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

Prerequisites

The course prerequisites are listed on the Howest website. If you're unsure if you've programmed enough to take this course, talk to me after class or via jennifer.sartor@elis.ugent.be.

Grading

The main work that you'll have to do for this course consists of 4-5 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 80% of your grade. We will have one final short test on the last day of class worth 20% of your grade. Make sure to attend classes so you are up to date with the material and assignments!

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 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.

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 non-valid reasons.

Late Work Policy

Assignments will be typically due on Thursdays by noon. Late assignments will not be accepted (I will give 5 minutes slack time). You are allowed 1 late day (24 hours), called a "mulligan", during this semester to deal with emergencies. You must notify me ahead of the submission time that you intend to take mulligan time. You can use the mulligan on only 1 assignment (you cannot break up the 24 hours).

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 Howest, and will result in failing the class. It's totally not worth it. 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 University of Texas at Austin's CS105 courses of Nate Kohl and Maria Jump, with additional thanks to Greg Kuhlmann.