From Engaging Computing Group

Comp4spr15: Comp4spr15

Home Assignments Lecture Blog Resources Discussion Group

91.204.201 Computing IV, Spring 2015
Section 201: Prof. Fred Martin, click for fred's email, MWF 10a–10:50a, Olsen 408

Office hours: W 11a–12p (OS208), R 2p–3p (Olney 524), F 11a–12p (OS208)

Section 202: Victor Grinberg (homepage), MWF 10a–10:50a, Olsen 311

Jing Xu, Office hours: T 9:30a–11:30a, Olsen 212A (201 grading)
Shan (Ivory) Lu, Office hours: TR 9a–10a, Olsen 212A (202 grading)
Note: Any student can meet with either TA.

Catalog Description


Advanced C++ programming, which deepens students' understanding of object-oriented analysis and design. Basic software engineering principles and practice, including work with APIs. Topics may include program translation, web software, parsing, and regular expressions.


Materials for this course will provided on this site and in links to other sites. We will not use a textbook.

Expected Learning Outcomes

At the end of this course, you will be able to:

  1. employ appropriate object-oriented (OO) techniques in C++ in the development of 500+ line programs
  2. analyze technical specifications for a variety of algorithms, and create working code based on specs provided
  3. use the Unix shell for C/C++ code development, including use of the gcc compiler and linker tools, and Makefiles
  4. use the C++ SFML (simple fast media library) for event handling, graphics, animation, and sound
  5. employ unit testing in your software development process
  6. use industry-standard C++ API libraries, including Boost (e.g. unit testing, regular expression, and date/time libraries)
  7. describe the value (and limitations) of coding standards, and use a static style checker to review your own code
  8. document your work for technical written presentations

Course Overview

The Princeton stuff is great because it's all about how computing connects to the larger world.

It's not the usual stuff about using computing to do ever-more complicated things. This is necessary and valuable, but it's kind of self-referential and insular.

We will do the following:

thanks Princeton
thanks Princeton
thanks Princeton
thanks Princeton
thanks Princeton
thanks Kronos

Based on the historical role of Computing IV in UMass Lowell's computer science curriculum:

Collectively, these things represent to us what is the most important learning outcome of the course, which is you progressing down your journey of becoming an effective and confident software engineer.

Also, we will use the Unix shell and Makefiles in your software development. This will be done in a Unix environment—either Linux or Mac. (Linux is recommended unless you are comfortable getting libraries working on your own.)

This is explicit learning outcome of the course, and it's required. If you're a Windows person, we'll be setting up for Linux development in the first week of the course.

You'll be seeing Emacs, the Unix shell, and Makefiles. You're welcome to use your own favorite text editor—as long as it's capable of helping you follow the coding standards we'll be using.

OK, that's the course overview! Now on to some more tactical things.

Course Structure and Grading

The class will have regular weekly assignments, which will be graded and returned.

These assignments are worth 50% of your overall grade.

Assignments will be accepted up to 1 week late with a 50% reduction in that assignment's value.

There will be two in-class exams during the semester. Each is worth 10% of your overall grade.

Instead of a written final, you will create a portfolio of your cumulative semester's work. This large document is 25% of your overall grade.

Classroom participation is 5% of your overall grade.

To summarize:
50% Weekly homeworks
20% Two exams
25% Final portfolio
5% Classroom participation

Discussion Group / E-Mail List

We will use a Discussion Group for class conversation and announcements. Critical information will be distributed via this list.

Lecture Blog and Capture

A daily summary of highlights of what happened in class each class meeting will be recorded in the Lecture Blog page.

In-class activity will be recorded using the University's Echo360 lecture capture system. This material is intended for your use if you must miss class, or if you want to go over again something that was presented/discussed in class.

Academic Integrity

You are welcome to discuss ideas in the class with your peers, but assignments must be completed individually. You may not look at each others' code, nor allow others to look at your code. When posting code on our own course forum for help, or a public forum, do not post more than an individual function.

If you received any help on a given assignment, you must discuss this in the assignment README file.

When turning in an assignment, you attest that, beyond any starter code I have provided or has been provided in standard API and reference documentation, you are the sole author the code that it includes.

Please be familiar with the university's policy on academic integrity.

Retrieved from
Page last modified on May 03, 2015, at 01:02 PM