CS 215 - Fundamentals of Programming II
Class Schedule: MWF 2, KC-136
Final Exam Period: Monday, December 9, 2:00pm-4:00pm
Grades for this course will be posted to Blackboard
These are announcements made in class or via email currently in effect
for this course.
NEW! SI sessions
SI session is available for this course on Mondays 6:00pm-8:00pm in
KC-267. The SI instructor is Abdullah Aljandali (aa472).
Course information handouts
- Syllabus and Schedule (PDF)
- Comparison of C, C++ and Java (PDF)
- Very Basic Unix (PDF)
- An Itty Bit of Git (PDF)
- Using GitKeeper for Submitting Assignments (PDF).
- Coding Style Guideline (PDF)
- NEW! Very Basic make (PDF)
- VirtualBox, a virtual
machine that can be used to run Linux on Windows. Note that
hardware virualization must be enabled in the BIOS of the host
machine. (In particular, HP machines have this disabled by
- 64-bit Ubuntu 18.04LTS VDI.
This file is a ZIP archive of a virtual disk image for VirtualBox
set up similarly to the UE Linux lab client and instructions on
how to create a VirtualBox VM from it.
- Create a new folder (e.g.
- Download/open this zipfile and extract files
virtual-box-instructions-2019-08.pdf) into the new
folder. Note that this zipfile is about 3GB. The extracted
VDI file is about 8GB and will grow larger as the system is
used to a maximum of 64GB.
- Follow the instructions to create and configure a
Desktop install disk ISO image can be downloaded, if you need
to start from scratch (e.g., you have a 32-bit machine) and/or
want use the latest Ubuntu version (currently 18.04). Here is a
Guide. Note that the ISO image must be burned to a DVD or a
bootable USB stick to install natively. For a VirtualBox
installation, only the image file is needed.
Once the installation is completed, do the following:
- Run system updates. The easiest way to do this is from a
terminal command line, type:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoremove
- Install the following packages: clang, ssh, git, gcc and emacs or vim. The
easiest way to do this is from a terminal command line,
$ sudo apt install clang ssh git gcc emacs
vim if that is the desired text editor.
- Click on the Devices menu, then on Insert Guest Additions CD image... Run the CD program. This will allow the VM to run in full screen mode.
- Reboot the VM
- git - a distributed version
control system. Site includes an on-line book.
This is a list of links to resources that may be useful in this course.
- Supplemental reading references
for C++, emacs, vi, and Unix
- Direct links to reference pages of C++
library classes and functions used in this course:
- Dr. Hwang's
emacs configuration file. In particular, this contains
commands to suppress the start-up screen and to change the
indenting style to 'elemtel', which is closer to the style the
- To put emacs into makefile mode type:
alum Tim Debaillie's vim configuration file. In
particular, this contains commands to make vim display TABs as
3 spaces instead of the default 8 spaces.
However, these .vimrc commands only effect how the tabs are
displayed in vi. When the tabs are printed by a2ps, the
default 8 spaces is still used. However, a2ps has a command
line option (-T#) to have it print tabs as some number of
spaces other than the default. It is used as follows to get 3
$ a2ps -T3 file1 file2 ...
Note: you only want to do this with source code files, not
- Cygwin, a UNIX environment for
Putty, a free terminal emulator for Windows that works
well for remote access to Unix boxes and using Unix
editors. Use the SSH protocol to access csserver.
- WinSCP, a free
file copying program for Windows that supports the SSH protocol.
Lectures and Assignments
This is a list of in-class exercises and assignments posted for this class
in reverse chronological order. Some may be available in hard copy
- Wednesday, November 13
- Homework 11
(PDF) - Due:
Monday, November 18 at 4:30pm
- Project 6
Wednesday, November 27 (first day of Thanksgiving Break)
- Open Kattis problem: Not Amused
- Friday, November 1
- Homework 10 (PDF)
Wednesday, November 6 Friday, November 8 at 4:30pm
- Wednesday, October 30
- Practical Exam II Review Sheet
- Project 5
- Due: Wednesday, November 13
- Monday, October 28
- Homework 9
- Due: Friday, November 1 at 4:30pm
- Wednesday, October 23
- Homework 8 (PDF) - Due: Monday, October 28 at 4:30pm
- Wednesday, October 16
- Project 4
(PDF) - Typos fixed 10/25 - Due:
Wednesday, October 30
- Friday, October 11
- Homework 7
(PDF) - Due:
Wednesday, October 16 at 4:30pm
- Wednesday, October 2
- Project 3 (PDF)
- Due: Friday, October 18 - electronically submit by 11:59pm
- Wednesday, September 25
- Homework 6 (PDF)
- Due: Wednesday, October 3, at beginning of class,
no late work accepted - turn in paper copy
- Practical Exam I Review Sheet
- Written Midterm Exam Review Sheet
- Monday, September 16
- Friday, September 13
- Homework 5
20 - extended to Monday, September
23 - electronically submit by 11:59pm
- Monday, September 9
- Project 1 (PDF)
- Due: Wednesday, September 18 - electronically submit by 11:59pm
- Homework 4 (PDF)
- Due: Friday, September 13 - turn in paper copy to instructor by 4:30pm
- Wednesday, September 4
- Homework 3 (PDF) - Due: Monday, September 9
- Friday, August 30
- Homework 2 (PDF) - Due: Friday, September 6 - turn in paper copy to instructor by 4:30pm
- Wednesday, August 28
- Homework 1 (PDF) - Due: Wednesday, September 4 - electronically submit by 11:59pm