C / C++ PROGRAMMING (80741)
CIS054-101Course Outline
Summer 2015 - June 15 to July 23

INSTRUCTOR: Dan McElroy    Dan.McElroy@sjcc.edu
HELP DESK: helpdesk@sjeccd.edu 1-408-270-6411 (Mon-Fri 7:00am to 5:30pm)

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

   

COURSE OVERVIEW AND OBJECTIVES:
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.

TIME COMMITMENT:
The definition of a college course indicates that 3 hours per week are expected for each unit of a regular semester course. This computes to 9 hours per week for a regular semester 3-unit course. A 3-hour lab per week should equate to 1-unit of credit. Two hours of homework for each hour of lecture also equates to 1-unit of credit. A full-time student taking 12 units should expect to spend 36 hours per week during a regular semester.

A summer session course compresses a full semester into 6 weeks. A student then should plan on spending about 27 hours per week for a 3-unit course.

The time commitment should be the same for an on-campus course and an online course.

STUDENT LEARNING OUTCOMES:
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 multi-dimensional arrays.
5. Construct programs using object oriented programming (OOP) techniques.
6. Create programs that use sequential and random access files.

------------------------- LECTURE CONTENT -----------------------------

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

----------------------------- LAB CONTENT ----------------------------------
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 printouts 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.

A lab report form is available on Moodle. Each lab report must include:
1. Your name, class, and date
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. A screen shot of the program execution
7. The listing of the program (code for the program)

SOFTWARE REQUIREMENTS AND ACCESS TO SJCC COMPUTER LABS:
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, NetBeans, DevCpp, Eclipse, CodeBlocks, etc.

San Jose City College has many computer labs on campus. The labs used by the CIS and CA departments have all of the software installed 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.

MOODLE:
The class webpage on Moodle 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 Moodle. The assignments must have your name, student ID, and exercise name at the top of the document. Late assignments will be accepted with a penalty. Make sure you can login to your Moodle account the first day of class. If you are adding the class, your MyWeb enrollment will be reflected at the next Moodle update. Student course enrollment is updated on Moodle 3 times a day - 6-7AM, 12Noon-1PM and 5-6PM.

Your eight-character Moodle 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 Moodle login would be damc4567.

The default password is changeme and must be changed the first time you login. Your password must contain at least six characters, at lease one lower-case character, at least one uppercase character and at least one number. Your password for Moodle can be different from the password on MyWeb.

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

E-MAIL:
All students are required to obtain an e-mail account in addition to their Moodle account. All correspondence through Moodle uses the e-mail address that you have listed with the Admissions and Records office. This includes any messages that 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 in person or by telephone during office hours or 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 Moodle.

Students at San Jose 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 used this e-mail address, but you will need it if you want to download a free version of the Microsoft Visual Studio C++ software.

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

ATTENDANCE AND DROPS:
You are expected to participate in the class using Moodle each week. Once you have shown some commitment to the class by attending, participating in quizzes, labs, or homework, I assume that you wish to be in the class. It is your responsibility to drop the class if you do not wish to continue. However, you may be dropped by the instructor if it appears that you are not participating in the class by submitting regular course work. 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. Important dates are listed on the last page of this syllabus.

In other words, if you want to stay in the class, you need to submit work on a regular basis or your may be dropped. If you want to drop the class, you should drop the class by one of the drop dates to make sure it happens for the best result on your transcript.

GRADING:

 DEFINITIONS    
A=Distinguished
B=Above Average
C=Average
D=Minimum Passing
F=Failing

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

NOTE: You can received a grade of 'C' by completing the quizzes, taking the final and completing only one lab assignment each week.

NO-NAME and LATE PENALTIES: Updated 5/14/2015, the day before class starts
You must include your name, student ID or Moodle ID, and exercise name on all work you submit. Unless otherwise specified in an assignment, your name, ID and exercise name should appear in the upper right corner of your lab report or essay. Penalties will be applied AFTER the score for your assignment has been computed.

Quizzes and Lab Assignments must be completed by 11:55pm by the next class assignment. Due dates are listed on Moodle for each assignment. The last quiz and the lab final are due on July 23. No late assignments will be accepted after July 23, the last day of the summer session.. A late penalty is deducted for each day or part thereof 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.

Penalty

Cause

1-3 points
Late penalty - 1 point for each day or partial day the assignment is late

1 point

No name on submitted assignment

1 point

No ID on the submitted assignment. Moodle or SJCC student ID is acceptable.

2 points
Missing INPUT / PROCESSING / OUTPUT (HIPO) chart, if part of the lab report
1-2 points
The Project Discussion is missing
2-4 points
Screen shot of executing program is missing, or does not match data entered in the report
2-4 points
The code you used to complete the project is missing

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.

Penalty

Cause

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.

 

CIS 054 COURSE OUTLINE - subject to change - see Moodle for any updates to the class schedule

Week
Dates

Lecture Topic
Chapter numbers refer to
Problem Solving with C++ 8/e

Lab Assignment
Page numbers refer to
Problem Solving with C++ 8/e

Homework and Quiz
To be completed before next week's class. Chapter numbers refer to
Problem Solving with C++ 8/e

Week 1
Monday

 
Lesson 1
June 15

Class Orientation
Course Syllabus
Moodle
Submitting Lab Assignments

Chapter 1
Computer Systems
Programming and Problem Solving
Intro to C and C++
C++ Keywords (Appendix p.987)
The ASCII Character Set (Appendix)
Testing and Debugging
Integrated Development Systems
-Microsoft Visual Studio .NET
-XCode (Mac)

Lab 1.1 Paycheck Program
Enter the Paycheck program. See Paycheck project code. Fill out the lab report form and submit using Moodle.

Lab 1.2 Syntax Errors
Complete the Syntax Errors Project shown on Moodle. Fill out the lab report form and submit using Moodle.

NOTE: I will 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. Please e-mail me to arrange a time to meet

Read chapter 2 - first third

Orientation Quiz on Moodle
Chapter 1 Quiz on Moodle

Week 1
Wednesday

 
Lesson 2
June 17

Chapter 2
Variables and Assignments
Input and Output
Data Types and Expressions
Precedence of Operators (Appendix)
Simple Flow of Control
Program Style

Lab 2.1 Too Many, Too Few
Complete the programming project shown on Moodle. Fill out the lab report form and submit using Moodle

Lab 2.2 Sum of Numbers
Complete the Programming Project #10 on page 105. Fill out the lab report form and submit using Moodle

Finish reading chapter 2
Read chapter 3 - first third

Chapter 2 Quiz on Moodle

Week 1
Friday

 
Lesson 3
June 19

 

Chapter 3
Boolean Expressions
Multiway Branches
Loop Statements
Designing Loops

Chapter 16
Exception Handling Basics
Programming Techniques

Lab 3.1 Electric Bill
Complete the programming project shown on Moodle. Fill out the lab report form and submit using Moodle

Lab 3.2 Compute PI
Complete the programming project shown on Moodle. Fill out the lab report form and submit using Moodle

Finish reading chapter 3
Read chapter 4 - first third

Chapter 3 Quiz on Moodle

Week 2
Monday

 
Lesson 4
June 22

 

 

Chapter 4
Top-Down Design
Predefined Functions
Programmer-defined Functions
Procedural Abstraction
Scope and Local Variables
Overloading C++ Function Names

Lab 4.1 Rock Paper Scissors
Complete the Programming Project #1 on page 170. Your program MUST use functions. Fill out the lab report form and submit using Moodle

Lab 4.2 Long Distance Call
Complete the Programming Project #5 on page 171. Your program MUST use functions. Fill out the lab report form and submit using Moodle

Finish reading chapter 4
Read chapter 5 - first third

Chapter 4 Quiz on Moodle

Week 2
Wednesday

 
Lesson 5
June 24

 

Chapter 5
void Functions
Call-by-reference Parameters
Using Procedural Abstraction
Testing and Debugging Functions
General Debugging Techniques

Lab 5.1 Fast Food Restaurant
Complete the programming project shown on Moodle. The program MUST use a function to compute and display values. Fill out the lab report form and submit using Moodle

Lab 5.2 Pythagorean Theorem
Complete the programming project shown on Moodle. Your program MUST use functions. Fill out the lab report form and submit using Moodle

Finish reading chapter 5
Read chapter 6 - first third

Chapter 5 Quiz on Moodle

Week 2
Friday

 
Lesson 6
June 26

 

Chapter 6
Streams and Basic File I/O
Tools for Stream I/O
Character I/O

Lab 6.1 Largest and Smallest
Complete the Programming Project #1 on page 364. Get the unsorted data file from the instructor. Fill out the lab report form and submit using Moodle

Lab 6.2 Median of a Data File
Complete the Programming Project #3a on page 364. Get the sorted data file from the instructor. Fill out the lab report form and submit using Moodle)

Finish reading chapter 6
Read chapter 7 - first third

Chapter 6 Quiz on Moodle

Week 3
Monday

 
Lesson 7
June 29

 

Chapter 7
Introduction to Arrays
Arrays in Functions
Programming with Arrays
Multidimensional Arrays

Lab 7.1 Tic-Tac-Toe
Complete the programming project shown on Moodle. Fill out the lab report form and submit using Moodle

Lab 7.2 Delete Repeats
Programming Project project #3 on page 430. Fill out the lab report form and submit using Moodle

Finish reading chapter 7
Read chapter 8 - first third

Chapter 7 Quiz on Moodle

Week 3
Wednesday

 
Lesson 8
July 1

 

Chapter 8
Array Type for Strings
The C++ string CLASS
C-Strings (not in the textbook)
Vectors

Lab 8.1 Sentence Formatting
Complete the Programming Project #1 on page 486. Fill out the lab report form and submit using Moodle

Lab 8.2 Array Search
Complete the programming project shown on Moodle. Fill out the lab report form and submit using Moodle

Finish reading chapter 8
Read chapter 9 - first third

Midterm Exam

Week 3
Friday

 
July 3
INDEPENDENCE DAY
HOLIDAY
July 3 & 4
No Classes
Campus Closed

Week 4
Monday

 
Lesson 9
July 6

Chapter 9
Memory Allocation in C and C++
Dynamic Arrays

Lab 9.3 Reservation System, version 2.0
Complete the Reservation System v2.0 project provided on Moodle. Fill out the lab report form and submit using Moodle

Read chapter 10 - first third

Chapter 9 Quiz on Moodle

Week 4
Wednesday

 
Lesson 10
July 8

Chapter 10
Structures
Classes
Abstract Data Types
Introduction to Inheritance
The this Pointer (Appendix p.1001)

Lab 10.1 Student Grading
Complete the Programming Project #1 on page 594. This project MUST use a structure or class definition. Get the data file from the instructor. Fill out the lab report form and submit using Moodle

Finish reading chapter 10
Read chapter 11 - first third
Read chapter 14 - first third

Chapter 10 Quiz on Moodle

Week 4
Friday

 
Lesson 11
July 10

Chapter 11
Friend Functions
Overloading Operators
Overloading Member Operators
     (Appendix p.1004)
Arrays and Classes
Classes and Dynamic Arrays

Chapter 14
Recursive Functions for Tasks
Recursive Functions for Values
Thinking Recursively

Lab 11 Rational Numbers
Complete the programming project on Moodle. This project MUST use a class definition. Fill out the lab report form and submit using Moodle

Finish reading chapter 11
Finish reading chapter 14
Read chapter 15 - first third

Chapter 11 Quiz on Moodle

Week 5
Monday

 
Lesson 12
July 13

Chapter 15
Inheritance Basics
Inheritance Details
Polymorphism
Virtual Functions

Lab 12.1 Salaried Employee Class
Complete the Programming Project #1 on pages 857 and 858. Fill out the lab report form and submit using Moodle

Finish reading chapter 15
Read chapter 12
Read chapter 18 - first third

Chapter 15 Quiz on Moodle

Week 5
Wednesday

 
Lesson 13
July 15

Chapter 12
Separate Compilation
Namesakes

Chapter 18
Standard Template Library
Iterators
Containers
Generic Algorithms

Lab 13.1 Movie Ratings
Complete the Programming Project #9 on pages 928 and 929. Fill out the lab report form and submit using Moodle
NOTE: The original syllabus listed the incorrect project and pages. The correction is project #14 on pages 599 and 600.

Finish reading chapter 12
Read chapter 18 - first third

Chapter 18 Quiz on Moodle

Week 5
Friday

 
Lesson 14
July 17

Chapter 13
Introduction to Data Structures
Nodes and Linked Lists
Stacks and Queues

 

Read chapter 13
Review for the Final

Chapter 13 Quiz on Moodle

Week 6
Monday

 
Lesson 15
July 20

Final Exam - review Final Exam lab test assigned  

Week 6
Wednesday

 
Lesson 16
July 22

FINAL EXAM - Written test

FINAL EXAM - Lab test

No more homework

No more quizzes

 
June 15
SUMMER SESSION 2015 BEGINS
June 17 LAST DAY TO DROP Summer classes for a refund of eligible fees
June 21 LAST DAY TO ADD using add codes on MyWeb
June 22

LAST DAY TO DROP classes without a W

June 25

LAST DAY TO REQUEST a refund of eligible fees (for class(s) dropped by June 17)

July 3-4 Independence Day Holiday obsreved - Campus closed
July 13 LAST DAY TO DROP classes with a W

July 23

SUMMER SEMESTER 2015 ENDS
August 5 Summer 2015 grades available on MyWeb