C / C++ PROGRAMMING - Syllabus

CIS054-101 (89746) Online - San José City College
Summer 2017 - June 19  to  July 27

INSTRUCTOR: Dan McElroy    Dan.McElroy@sjcc.edu

OFFICE HOURS: Meet on Zoom web teleconferencing. I am available on Tuesdays 2:00pm-2:50pm and Thursdays 6:00pm-6:50pm. If you want to meet, e-mail me so that I can setup a Zoom meeting. I will be on campus one or two days at the beginning and end of the semester. You also need to e-mail me to arrange a time to meet on campus the first or last week.

HELP DESK: Contact the help desk if you have problems logging into the MyWeb or Canvas servers. I can't help you with login problems. Contact me for questions about the course.
    helpdesk@sjeccd.edu 1-408-270-6411 (Mon-Fri 7:00am to 5:30pm)


(Required) - Choose either:
Problem Solving with C++ 9th  Edition,    by Walter Savitch - PrenticeHall,
ISBN-13:   978-0-13-359174-3
      --- or ---
Problem Solving with C++ 8th  Edition,    by Walter Savitch - PrenticeHall,
ISBN-13:   978-0-13-216273-9

NOTE: Be cautious about purchasing 'International' versions from some vendors on the Internet. These versions contain most of the material in the US version but may be missing some text and some of the problems assigned as lab exercises.


9th editon image
Ninth Edition


8th edition image
Eighth Edition


Students will study C, a general-purpose programming language, which features brevity of expression, modern control flow and data structures, and a rich set of operators. Students will also study C++, an object oriented programming language that is built using the C language as a base. Students will learn the importance of portability and efficiency through a variety of programming assignments. This course includes application programs and/or systems software.


This is a three unit college class. Because it is an engineering type course, there is a lot of work. During a regular semester course, you should plan to spend about 9-10 hours per week on each 3-unit class but for a summer you should plan on spending about 27-30 hours each week. There may be some weeks you end up spending less time, but there may also be a few weeks that require more time.

The class begins on Monday June 19, 2017 and ends on Thursday July 27, 2017. Due dates are listed on Canvas for each assignment. During the summer class, there is usually a quiz and one or two lab assignments given class session, Monday, Wednesday or Friday. You can complete the assignments on your own schedule as long as you submit them by their due dates. Lab assignments receive a penalty if submitted late. The late penalty is in addition to any other scores the assignment received. Quizzes are considered late after their due date but are still available until the next class module. Quizzes are locked after the 'Available until' date and can no longer be submitted. The 'Available until' date can be viewed when opening a quiz. As a bonus, a maximum of two quizzes can be made up if the due date is missed. NOTE: The last day of class for this summer session is on a Thursday, July 27, not Friday of that week. Finals are due that Thursday and no work will be accepted after the end of the class.

Missing or not completing assignments may prevent you from passing the class. If you have vacation plans, or your schedule is full with other important obligations, you may want to consider enrolling in the course at another time.


The following SLOs are provided by the college and are part of an articulation agreement between San José City College and the UCs and the CSUs. In order to meet transfer requirements, all sections of CIS-054 must meet these objectives. By the end of the course, students will be able to:

  1. Analyze simple and complex programming problems and develop software solutions.
  2. Create console-based programs using structured programming techniques including sequence, selection, and repetition.
  3. Organize a solution to a large program by breaking the program into smaller parts.
  4. Manipulate data using strings and single or multidimensional arrays.
  5. Construct programs using object oriented programming (OOP) techniques.
  6. Create programs that use sequential and random access files.


1. Algorithmic Design and Testing
2. Structure of C and C++ programs
3. C / C++ Data Types
    a. Naming conventions
    b. Constants
    c. Variables
4. Input and Output
    a. The C-language printf() and scanf() functions
    b. The C++ language cout and cin objects
5. Operators
    b. Relational and logical operators
    c. Increment and decrement operators
    d. Type conversions
6. Expressions and Statements
    a. Assignment operators and expressions
    b. Precedence and order of evaluation
7. Selection
    a. if(...) / else
    b. else if(...)
    c. switch / case
8. Repetition
    a. while and for
    b. do / while
9. Functions and Subroutines
    a. Functions returning values, and functions not returning values
    b. External Variables
    c. Scope and visibility rules
    d. Static variables
    10. Arrays and Pointers
    a. One-dimensional arrays
    b. Array initialization
    c. Two-dimensional and larger arrays
    d. Pointers to arrays and pointers to pointers
    e. Pointers to functions
11. Character and String Processing
    a. Definition of C strings
    b. String manipulation using the C string library
    c. The C++ String class
    d. String manipulation using C++ strings
12. Structured Data
    a. Data structures using the struct statement
    b. Arrays of structures
    c. Pointers to data structures and functions
    d. Unions and typedefs
13. Introduction to C++ Objects
    a. Class construction and instantiation of objects
    b. Constructors and destructors
    c. Arrays of Objects
    d. Assignment operators and copy constructors
    e. The "this" pointer and friend functions
14. C++ Class Member Methods
    a. Overloaded operators
    b. Built-in conversions
    c. Class to class conversions
    d. Class inheritance
    e. Polymorphism
15. File Access
    a. Sequential Files
    b. Random Access Files
    c. File access using stream operators


1. Using arithmetic and arithmetic-assignment operators
2. Utilizing relational and logical operators
3. Counting loops and sentinel value loops to terminate data input
4. Using functions and sub procedures
5. Processing data using arrays and pointers
6. Manipulating character strings
7. Constructing Object Oriented Programs (OOP)
8. Reading and writing sequential and random access files
9. Utilizing debugging techniques

LAB ASSIGNMENTS: Some of the lab assignments will take longer than other labs. It is expected that each student will make use of the Open-Lab time to complete assignments as needed. Open-Lab hours are made available to students registered in CIS courses. Instructions will be given after the first week on how to use the open lab.

LAB REPORTS: Programs turned in must include screenshots of both the program and the results of testing the program. Programs will be graded on whether they work, quality of output, program readability and appearance, program construction and completeness of testing, and very importantly - documentation.

Unless otherwise indicated, each lab report must include:
1. Your name, class, platform (PC or Mac), date and an assignment ID # if provided
2. A written description of the lab project in English
3. A list of inputs, processing and outputs for each program
4. Test data values, expected results and actual results when the program runs
5. A discussion of what you did to make the program run and any problems you encountered
6. Screenshot(s) of the program execution
7. The listing of the program (code for the program)

EXTRA CREDIT is occasionally available for work above and beyond the minimum requirements for a lab assignment. An extra credit lab assignment is like a regular assignment, and all of the points earned are counted as extra credit. The extra points are added into the total points received for the class but Canvas shows the assignment is worth 0 points of regular credit. For example if there were two regular assignments at 10 points each and one extra credit assignment and the student received 7 points each, the total percentage would be computed as follows: (7+7+7)/(10+10+0) = 21/20 = 105%
Sometimes a regular assignment may have extra credit for doing more than the minimum required to complete the assignment. For example a 10 point assignment may have the opportunity to earn an extra 3 points for a total of 13 points out of 10. The extra credit part of the assignment MUST be turned in when the assignment is submitted. The extra credit points will not be awarded at a later date even if the assignment is resubmitted. If an assignment is worth 10 points with 3 points extra credit, Canvas initially shows the assignment as 10 points. Extra credit points are added to the total score.


Many of the handouts and lecture material are provided in the PDF format. Free Adobe Reader Software is available at https://get.adobe.com/reader/otherversions/

The C and C++ programming languages are used to develop programs on a variety of operating systems, such as Microsoft Windows, Apple Macintosh, Linux and others. Students need access to a computer that has a C/C++ compiler and an editor or software development system such as Microsoft Visual Studio, Apple Macintosh Xcode, Code::Blocks, NetBeans, DevCpp, Eclipse, etc. If you are using Microsoft Windows, I recommend that you get a free copy of Visual Studio for students from the Microsoft Imagine (formerly Dreamspark) website using your StudentID@stu.sjcc.edu e-mail address. Your studentID will be added for access after you are registered for the class. More information will be available on the Canvas class webpage.

San José City College has many computer labs on campus. Many of the labs used by the CIS and CA departments have the software that you will need to complete the class assignments. Most of the other labs on campus will have Microsoft Office installed, but may not have a software programming development system installed. You need to be an SJCC registered student to use the computers in the Library. You may need to be registered for tutoring to use the LRC labs. Other labs serve different departments on campus. You may need to be registered in one of their classes to use their labs.


San José City College provides many support services to students. A list of these services can be found at http://www.sjcc.edu/current-students/support-programs Included are: DSP&S, EOP&S, CalWorks, the CARR program, Puente, Umoja and Veteran Services


San José City College is using Canvas as the online Learning Management System (LMS). Canvas works best with the Google Chrome and Firefox web browsers. The course webpage on Canvas contains class notes, links to videos, PowerPoint slides, class announcements, the course syllabus, test dates, and other information for the course. All assignments must be submitted using Canvas. Make sure you can login to your Canvas account the first day of class. If you are adding the class, your MyWeb enrollment will be reflected at the next Canvas update. Student course enrollment is updated to Canvas three times a day - 6-7AM, 12Noon-1PM and 5-6PM.

Your eight-character Canvas login ID is the same as for MyWeb and is built from the first two letters of your first name, the first two letters of your last name, and the last four digits of your SJCC student ID number. For example, if my name is Dan McElroy and my student ID is 1234567, my Canvas login would be damc4567. When you first get access to Canvas, click the 'Activate/Reset Password' link to set your password for access to all of your classes that are on Canvas.

Additional information can be viewed at http://www.sjeccd.edu/district-services/ITSS/help-desk


All communication concerning the class and any assignment submissions occur through Canvas. All students are required to obtain an e-mail account in addition to their Canvas account. All correspondence through Canvas uses the e-mail address that you have listed with the Admissions and Records office. This includes any messages I send to the class as well as scores for each assignment. It is important that you update your e-mail address if it changes. If you have any questions about the course or need assistance, please contact me by e-mail at any time. You can update your e-mail address by clicking the "CLICK HERE" message on the purple rectangle when you go to the MyWeb page at http://myweb.sjeccd.edu (NOTE the 'E' in sjeccd). If you have an e-mail filter for spam, etc., it is your responsibility to make sure that you are receiving the e-mails that I send you, either from my college address Dan.McElroy@sjcc.edu, or e-mails sent through Canvas.

Students at San José City College are also given a free .edu e-mail address @stu.sjcc.edu
For example, if my student ID was 1234567 and my MyWeb ID was damc4567, my e-mail address would be damc4567@stu.sjcc.edu

The initial password starts with Password (with a capital-P) followed by six digits for the month, day and year of your birth. Example: Password061475

You are not required to use this e-mail address, but you may need it if you want to download a free version of the Microsoft Visual Studio. You do NOT need to use this e-mail address to download Code::Blocks, DevCpp or software from Apple Corp.

Additional information can be viewed at http://www.sjeccd.edu/district-services/ITSS/help-desk


Teachers can take attendance for an on-campus class by seeing who is in the class and participating. Poking your head in the door and looking at the board would not count as being present. For an online class, it is necessary that you not only login to Canvas, but you need to participate by submitting your assignments, quizzes and joining available discussions. Just logging in to Canvas and looking around is not considered participation.

Once you have shown some commitment to the class by submitting quizzes, labs, or homework, I assume that you wish to be in the class. Although it is the student's primary responsibility to drop a class, you may be dropped for non-participation. So, login to Canvas several times a week, keep up with the class and I look forward to seeing your hard work online. It is your responsibility to drop a class if you do not wish to continue. If you do not complete the course, and do not officially drop through the Admissions office and are not dropped by the instructor, you will receive a grade based on your completed work. If for any reason you are unable to complete the requirements for the course, you must officially withdraw by the deadline date at Admissions and Records, either in person or using https://myweb.sjeccd.edu

Friday June 23, 2017 is the last day to withdraw from a spring semester course WITHOUT receiving a "W" on your record. Any classes that you withdraw from after that date will show a "W" on your record.

Tuesday July 18, 2017 is the last day to drop a spring semester course and receive a "W" on your record. After that date students will receive a letter grade based on your submitted work for the semester.

An 'Incomplete' will be issued only for extenuating justifiable circumstances (medical, military, etc.) and only if the majority of the work in the course has already been completed. An 'Incomplete' will not be considered if the majority of the work has not been completed by the end of the course. Because the grade of 'A' represents 'Distinguished', an 'A' will not be awarded to students who receive an Incomplete and finish their work after the class has officially ended, even if their total score is greater than 90%.

Veterans on the GI Bill, students on financial aid and international students should contact the appropriate office to discuss consequences of dropping or being dropped from a course.


Definition Percent

B=Above Average
D=Minimum Passing

 A = 90%-100%
 B = 80%-89.9%
 C = 70%-79.9%
 D = 60%-69.9%
 F =  0%-59.9%

You can receive a 'C' in the class by taking the quizzes and the final, and completing at least one lab assignment each class session. The lab assignments are an essential part of the class. You cannot pass the class by completing only the quizzes, midterm and final.

NO-NAME and LATE PENALTIES: The lab assignments must have your name, student ID, and exercise name at the top of the document. Late assignments will be accepted with a penalty. Penalties will be applied AFTER the score for your assignment has been computed.

Due dates are listed on Canvas for each assignment. No late assignments will be accepted after the last day of the class. A late penalty is deducted for each day or partial day for each day the assignment is late, up to 3 points late penalty. The late penalty is in addition to any other scores the assignment received.

REGRADING ASSIGNMENTS: If you ask for an assignment to be regraded after it has already been graded, one point will be deducted from the new score. For example, an assignment worth 10 points that is regraded will have a maximum score of 9 points.

ACADEMIC DISHONESTY PENALTIES: You are expected to download your own assignments and DO YOUR OWN WORK. I have several ways to help me determine if a student is submitting another person's work. I may not catch every instance of plagiarize work, but I can catch many. The penalties for Academic Dishonesty far exceed the penalties for submitting your work late. I strongly suggest that you do not share your work with other students, or share your disks or flash drives that contain your class work. Sometimes students have loaned their flash drive to another student and the second student accidentally submitted the wrong file. Other times the second student just copied the first student's work and changed the name. If it looks like work was copied, even if accidentally, the penalties will apply. Don't take the chance on messing up your grade. The penalties listed below are for my class. Other instructors may enforce softer or much harsher penalties. For more information concerning the San José City College policy on disciplinary action, refer to the college catalog Chapter 5, Student Complaint Process, Section III-A



Zero points on the assignment and your course grade will be lowered

All or some of your work was created by another student this semester, or a previous semester.

Zero points on the assignment and your course grade will be lowered again.

Second offense.

An 'F' in the class

Third offense.


1. The Americans with Disabilities Act (ADA) is a civil rights statute that prohibits discrimination against people with disabilities. Students with disabilities have rights that can be found in Chapter 5 page 38 of the College Catalog.

2. SJCC is committed to providing a safe positive learning environment where students can pursue their educational goals. The Standards of Student Conduct can be found in Chapter 5 page 41 of the College Catalog.

3. SJCC is committed to maintaining an environment free of sexual harassment or discrimination based on race, religious creed, color, national origin, ancestry, disability, medical condition, marital status, political beliefs, organizational affiliation, sexual orientation, gender or age. For more information, see Chapter 5 page 40 of the College Catalog.

4. If a student is attending a postsecondary institution – at any age – the rights under the Family Educational Rights and Privacy Act (FERPA) have transferred to the student. However, although the rights under FERPA have now transferred to the student, a school may disclose information from an “eligible student’s” education records to the parents of the student, without the student’s consent, if the student dual-enrolled in high school and college and is a dependent for tax purposes. For more information, see www2.ed.gov/policy/gen/guid/fpco/pdf/ferpafaq.pdf

CIS 054 COURSE OUTLINE  -  June 19 to July 27

    Subject to change - see Canvas for any updates to the class schedule



Homework and Quiz
To be completed before class.
Lecture Topics
Chapter numbers refer to
Problem Solving with C++ 8/e
Lab Assignments

Module 1

Week 1
June 19

Orientation Quiz

Read chapter 1 - this chapter gives a very nice introduction to C++ and includes several helpful hints.


NOTE: I can be on campus Monday and Tuesday the first week of school to help students get started with the lab work and complete the first programming lab assignment.

E-mail me to arrange a time if you want to meet.

Quiz - Chapter 1, Intro to C++

Class Orientation
Course Syllabus
Using Canvas
Submitting Lab Assignments

Chapter 1
Computer systems
Programming and problem solving
Intro to C and C++
C++ keywords (Appendix)
The ASCII Character Set
Testing and debugging
Integrated Development Environment (IDE)
-Visual Studio .NET
-XCode (Mac)

Paycheck Program 1.0

Syntax Errors

Module 2
Week 1
June 21

Read chapter 2, C++ Basics
2.1 Variables and Assignments
2.2 Input and Output
2.3 Data Types and Expressions
2.4 Simple Flow of Control
2.5 Program Style

Quiz - Chapter 2, C/C++ Basics

Chapter 2, C and C++ Basics
Program organization
Variables and assignments
Input and output
Data types and expressions
Precedence of operators (Appendix)
Simple Flow of control
Arithmetic operators

Players on a Team

Sum and Average of Numbers


Module 3

Week 1
June 23

Read chapter 3
3.1 Using Boolean Expressions
3.2 Multiway Branches
3.3 More About Loops
3.4 Designing Loops

Quiz - Chapter 3, Flow of Control

Chapter 3
Boolean expressions
Different IF statements
Case statements
Multiway branch and loop statements
Designing loops

Chapter 16
Exception handling in C++
The equivalent of exception handling in C

Electric Bill
with Exception Handling

Compute PI
using a loop

Privacy in the workplace

**** The last day to drop a class without a 'W' mark on your transcript is June 25, 2017 ****

Module 4

Week 2
June 26

Read chapter 16, Exceptions
Read chapter 4 - 1st half
4.1 Top-down Design
4.2 Predefined Functions
4.3 Programmer-defined Functions

Quiz - Chapter 4, Functions

Chapter 4
Top-Down Design
Predefined Functions
Programmer-defined Functions
Procedural Abstraction


Long Distance Call
Your program MUST a function

Module 5
Week 2
June 28


Read chapter 4 - 2nd half
4.4 Procedural Abstraction
4.5 Scope and Local Variables
4.6 Overloading Function Names

Quiz - Chapter 4, Scope

Chapter 4
Scope and visibility
Local vs. global variables
Overloading functions

Convert between Metric and English Measurements

Discussion: Ethics

Module 6
Week 2 Friday
June 30


Read chapter 5
5.1 void functions
5.2 Call by reference
5.4 Debugging Functions

Quiz - Chapter 5, More on Functions

Chapter 5
void Functions
Call-by-reference parameters
Scope and local variables
Using procedural abstraction
Testing and debugging functions

Fast Food Restaurant
The program MUST use functions to compute and display values.

Length of a Line (Pythagorean)
Your program MUST use a function.

Module 7

Week 3
July 3

No homework or quizzes

Cool and Interesting Things

Cool and Interesting Things


July 4

July 4
No Classes
Campus Closed
Module 8

Week 3 
July 5

Read chapter 6
6.1 Streams and File I/O
6.2 Tools for Stream I/O
6.3 Character I/O

Quiz Chapter 6, I/O Streams

Chapter 6
Character streams
File streams
Reading and writing files
Sequential access files
Random access files

Range, Mean, Median of a File

Inventory Control Using Two Files

Module 9

Week 3 
July 7

Read Chapter 7
7.1 Introduction to Arrays
7.2 Arrays in Functions
7.3 Programming with Arrays
7.4 Multidimensional Arrays

Quiz Chapter 7, Arrays

Chapter 7
Organizing data into arrays
Passing arrays to functions
Programming with arrays
Multidimensional arrays


Tax Table Lookup using arrays

Module 10
Week 4
July 10

Read Chapter 8
8.1 Array Type for Strings
8.2 The C++ string class
8.3 Vectors

Midterm Exam

Chapter 8
C++ Strings vs. C Strings
(C strings are not in the textbook)
Searching and manipulating strings

Sentence Formatting

String Manipulation

Module 11
Week 4
July 12

Read Chapter 9
9.1 Pointers
9.2 Dynamic Arrays

Quiz Chapter 9, Pointers

Chapter 9
Declaring and defeferencing pointers

Memory allocation in C and C++
Dynamic arrays

Reservation System

Extra Credit Lab

Discussion: Clearest and Muddiest

Module 12

Week 4

July 14

Read Chapter 10
10.1 Structures
10.2 Classes
10.3 Abstract data types
10.4 Introduction to inheritance

Quiz Chapter 10, Objects

Chapter 10
Structures vs. Classes
Abstract data types
The this pointer (Appendix)

Student Grading
This project MUST use a structure or class definition. Get the data file from the instructor.

Binary Search of Structured Records This project must use an array of pointers to structured records.

Module 13

Week 5
July 17

The last day to drop a class with a 'W' mark on your transcript is July 17, 2017

Read Chapter 11
11.1 Friend functions
11.2 Overloading operators
11.3 Arrays and classes
11.4 Classes and dynamic arrays

Quiz Chapter 11, Friends, Overload
Quiz Chapter 14, Recursion

Chapter 11
Friend functions
Overloading operators
Arrays and classes
Classes and dynamic arrays

Chapter 14
Recursive functions

Rational Numbers
A C++ project MUST use a class definition.

Discussion: Artificial Intelligence

Module 14

Week 5
July 19

Read Chapter 15, Inheritance
15.1 Inheritance basics
15.2 Inheritance details
15.3 Polymorphism

Quiz - Chapter 15, Inheritance

Chapter 15
Virtual functions

Derived School Majors Class

Virtual Functions

Module 15

Week 5
July 21

Read Chapter 12
12.1 Separate compilation
12.2 Namespaces

Quiz Chapter 12, Namespaces, etc.

Chapter 12
Separate compilation

Movie Ratings

ADT Digital Time

Module 16

Week 6 Monday
July 24

Read Chapter 13
13.1 Nodes and linked lists
13.2 Stacks and queues

Quiz Chapter 13, Data Structures

Chapter 13
Introduction to data structures
Pointers and linked lists
Nodes and linked lists
Stacks and queues
Reverse Polish notation


Final Project Assigned

Module 17

Week 6
July 26

Read Chapter 17 Templates
17.2 Algorithm abstraction
17.2 Data abstraction

Read Chapter 18
18.1 Iterators
18.2 Containers

Chapter 17

Chapter 18

Prepare for the final
Module 18

Week 6
July 27

Thursday, July 27 is the last day to submit any work or late assignments to have them included in your grade.

FINAL EXAM - Online test

FINAL EXAM - Lab test


Important Dates Summer 2017 for Classes That Are Six Weeks Long
June 19, 2017 to July 27, 2017
(all information subject to change)

LAST DAY TO ADD using add codes on MyWeb
LAST DAY TO DROP Spring classes without being assessed enrollment fees
LAST DAY TO DROP Spring classes with eligibility for refund of fees
LAST DAY TO DROP Spring classes without a "W" on a transcript
NOTE: Registration fees will be assessed for any classes dropped after 6/22

CENSUS DAY - FIRST DAY TO DROP Summer 2017 classes with a "W" for regular semester classes
Independence Day Holiday - Campus Closed
LAST DAY TO DROP Spring classes with a "W" on record
Summer 2017 grades available at      http://myweb.sjeccd.edu