CISC 3142
Programming Paradigms in C++
Syllabus


The Official Syllabus

Here is the official department syllabus for this course

Text

A Tour of C++ (Third Edition)
Stroustrup
Pearson
ISBN 13: 9780136816485 (2022 update)

This is the most recent 'brief' 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 hopefully be covering. This book is a good reference as well, and as such is probably worthwhile getting this latest edition. It is brief compared to the companion book, The C++ Programming Language, also by Stroustrup. This book is a much more comprehensive coverage of the language than A Tour. The author first presents a 'brief' overview of the language (it is this brief overview that basically was extracted to prodice A Tur, and then goes into greater detail in the second part of the book. The author also goes into some detail as to his rationale for many of the language decisions. It was my previous choice of text for 3142, but I found it to be too much for this course. If you are really interested in C++, or simply a well-written programming language book for programmers (as opposed to the intro texts you've be exposed to), you might consider purchasing it. You should find all the material from A Tour in it, but you may have to look around a bit, and my 'Reading' references at the top of the Lecture Note pages won't correspond to that text. (I wouldn't buy them both — too much overlap &mdas; but together, A Tour and The C++ Programing Language cost less than half of an intro-to-programming textbook.) Here is a short description of the text from Stroustrup.

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 anything 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 follow the text in terms of presentation order (i.e., each chapter covered will have a set of lecture notes), though I will be presenting certain topics n more detail. We will also discuss the notion of programming paradigms, and at some point will


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

Your Developmwnt Environment<.h3> Feel free to use any environment for you C++ development: command-line or your choice of IDE. If you want recommendations, you can find them here.

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 breakdown of you final semester average is:

subject to the following:

Missing an Exam (Other than the Final)

There are no makeup exams. If you miss an exam, you must provide some form of written reason (simply deciding not to take the exam is not an acceptable reason):

Incompletes (INC)

For the most part, I do not give a grade of Incomplete.

Paraphrasing from the Bulletin (page 57), a grade of incomplete (INC) may be assigned at the discretion of the instructor under one of two conditions:

Only one of the above two conditions (not both) may apply in order to receive an INC. Please do not ask me to give you an INC so that you can submit a semester's worth of assignments.

If an INC is not resolved, a grade of FIN is eventually assigned.

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.