CISC 3142
Programming Paradigms in C++
Syllabus


The Official Syllabus

Here is the official department syllabus for this course

Text

The C++ Progrmming Language (4th Edition)
Stroustrup
Pearson
ISBN 13: 9780321563842

This is the most recent overview of the language from its creator/designer. Earlier editions will probably not have up-to-date information on many of the more interesting features we will be covering. This book is a good reference as well, and as such is probably worthwhile getting this latest edition. The author also goes into some detail as to his rationale for many of the language decisions.

Readings From the Text

At the top of each lecture page is a listing of specific chapters/sections correspond to material covered in that lecture; other topics are for your general information only; of course, feel free to look at the other material in the chapters, we will get to some of it later. Don't be concerned if some of the material or examples go over your head; this is not an introductory text, it's meant for experienced programmers. Feel free to ask me about something you don't understand.

Other Readings

Following the text readings section, there will often be an additional section of other readings … articles, websites, images, etc. These are completely optional, and are solely for you own enjoyment. You are not responsible for any of the material therein (unless it is contained in the Lectures Notes or presented in class).

Code Presented or Related to the Lecture

The last section on the Lecture page is a link to code presented or otherwise contained in the lecture. Feel free to study, or use that code in any manner you feel fit. In particular, if you find it useful, you can copy it into any of your assignments.

Topic Overview

We will start off with some preliminaries — the usual 'overview' and a review of what you should be bringing to this course from your earlier coursework. We will then present some simple C++ programs to give you model code for your own initial programs. These samples are heavily annotated and have been designed so they include most of the basic coding techniques you need for elementary programs in C++. The last of these preliminary topics is a presentation — in Java — of a set of concepts that are necessary in or to understand C++; in particular in contrast to Java. Their presentation in Java may be occasionally 'awkward' or artificial, how it is still a worthwhile exercise because of your familiarity with that language.

We will then head into the text which presents the language in something of a 'spiral' approach. Part I is an overview of the features of the language with brief discussions of motivations, usefulness, etc. As far as I can tell, this material closely follows another of Stroustrup's book A Tour of C++. The three primary subsections of Part I — Basic, Abstraction Mechanisms, and Container & Algorithms — are then revisited in Parts II, II and IV of the text respectively.


Along the way, we will be comparing C++ to Java; the two language make a fascinating study in contrasts; a stark example of languages that are so close in syntax, and semantics are a certain level, and yet so far apart in others. We will also be investigating the notion of programming paradigms, i.e., a way of viewing a programming language based on its language features. In particular, this will allow us to provide insights into the differences between C++ and Java, as well as understand many of the newer language features of the languages.

Assignments

Programming requires practice, and in this course such practice comes in two forms: short exercises, and labs/projects. The short exercises typically consist of a few lines of code and are very narrowly focused on a topic covered in class. Most of these exercises will be trivial for you; they are primarily meant as practice with the syntax and semantics of the language (which is identical to Java for many of them). The labs/projects are larger, often complete programs, usually incorporates several topics, and gives you a better taste of 'real' programming.

You will be using CodeLab — an online, interactive programming exercise system — for both types of assignments. You can find more about CodeLab here

The exercises — being rather short and not full programs — are completed directly in CodeLab, while it is recommended that you code and complete your labs in the IDE of your choice prior to submitting it to CodeLab. (CodeLab is not meant as an IDE, coding a fullprogram from scratch in it is not recommended.)

CodeLab Information

To Register:

Grading of Assignments

When you submit an exercise of lab to CodeLab, it checks that your code is correct, by running it against various test cases. If your code fails, CodeLab will often provide feedback or hints to help you correct your mistake. For the short CodeLab exercises, it is sufficient to simply get a correct response from CodeLab. Many of your labs will be that way as well; all you need is a correct response from CodeLab.

For several of the labs however, I will mark the exercise as 'For Approval', which means that I will be performing a final review and check of your code after CodeLab has determined that it passes the test cases. This 'instructor check' looks for style, format, and documentation of your code. I will then approve or deny your submission; in the latter case that means you must fix your code based on my comments, and resubmit. Once approved, you are done with the assignment.

Your score on this practical portion of the course will be straight percentages of the number of labs completed and the number of CodeLab exercises completed, with the final 'labs & assignments' average being calculated as 25% CodLab exercises and 75% labs.

The labs and CodeLab exercises are posted in CodeLab in two separate sections. They are all assigned deadlines, somewhere between one and three weeks from their initial assignment. As they correspond to the lectures, I will post them on the day the lecture is posted (so you can get a head start on them if you are so inclined) , they are then officially assigned the day the lecture is finished (my lectures do not typically correspond to class meetings, but rather span several), and the deadline is calculated from that day.

Grading:

One cannot truly be said to have completed the material in this course without having both learned the concepts presented as well as achieving a basic competency in coding C++. To this end, you must perform passing work on both the exams as well as the assignments. It is insufficient to obtain a passing average by scoring a passing grade on the exams or the practicum but not both. As such the grading system is designed to have two gatekeepers: a passing grade on your exams, and one on the practicum:

The faculty and administration of Brooklyn College support an environment free from cheating and plagiarism. Each student is responsible for being aware of what constitutes cheating and plagiarism and for avoiding both. The complete text of the CUNY Academic Integrity Policy and the Brooklyn College procedure for implementing that policy can be found at this site: http://www.brooklyn.cuny.edu/bc/policies. If a faculty member suspects a violation of academic integrity and, upon investigation, confirms that violation, or if the student admits the violation, the faculty member MUST report the violation.


In order to receive disability-related academic accommodations students must first be registered with the Center for Student Disability Services. Students who have a documented disability or suspect they may have a disability are invited to set up an appointment with the Director of the Center for Student Disability Services, Ms. Valerie Stewart-Lovell at 718-951-5538. If you have already registered with the Center for Student Disability Services please provide your professor with the course accommodation form and discuss your specific accommodation with him/her.