Prerequisite: CS 140
Time and Place: MW CS150 001 12:00 - 12:50 PM EB 0012
TR CS150 004 9:30 – 10:20 AM EB 0011
F CS150 004 8:00 – 9:50 AM EB 2026 (lab)
F CS150 001 12:00 - 1:50 PM EB 2026 (lab)
Instructor: Xudong William Yu
Engineering Building 3039
Office Hours: MWF 10-11 AM
MWF 1-2 PM
TR 1-3 PM
(or by appointment)
Teaching Assistant: TBA
Text Books: 1. “Problem Solving with C++”, 2nd edition, by Walter Savitch.
2. “Data Abstraction and Problem Solving with C++”, 2nd edition,
by Carrano, Helman, and Veroff.
This is the second in a three-course sequence in Introduction to Computing. It introduces the concept of Abstract Data Types (ADT) and Object-Oriented Programming, using C++ classes and structures. Other topics include algorithmic program design and problem solving, recursive functions, pointers, linked lists, and memory management.
The instructor will place class material (e.g., assignments, examples, notes, etc) in the folder
Classes ob ‘engfs2’\CS\CS150\William Yu. Students can access the information by logging in to the computer in our lab. Please check the folder before each class for new class notes and examples.
For students to gain understanding of the material presented in the course, regular class attendance is essential. Students are expected to attend all classes and arrive on time. Any student who arrives late to class must see the instructor immediately after the class. Except for an emergency, any student who needs to leave the class early must notify the instructor prior to the start of the class.
Computer assignments will be given once a week at the beginning of the lab. Assignments are either in-class, which are due at the end of the lab or take-home, which are due at the beginning of the next lab. Most assignment will require the submission of both a hard copy and a soft copy. The soft copy must be placed on the department server (in dropbox on ‘csfs2’\CS150_00?\your_folder) before the due time. Retain all source programs until a graded program printout is returned to you. A 10% penalty will be applied for each day the program is late, including weekends, prior to the instructor’s grading. No late program will be accepted after the instructor/TA has graded the class’s programs. Students are expected to do their own work. Copying of other people's work for tests, quizzes, or lab work will result in the assignment of a zero grade.
Quizzes will be given once a week, usually in the first few minutes of a lab. The questions on each quiz will cover recent material from the lectures and the labs.
There will be two in-class lab exams during the semester. Each lab exam assignment will be distributed at the beginning of a lab period, and the entire 110-minute lab period will be used to complete the assignment. The students must place their finished program on the department server in the appropriate folder at the end of the lab period.
Two 60-minute tests and a 100-minute comprehensive final examination will be given. They will be announced at least a week in advance. Student who has a hardship excuse for missing a test must notify the instructor on or before the day of the test to schedule a makeup.
Programming assignments: 25%
Lab exams: 15%
Final examination: 20%
90 – 100 A
80 – 89 B
70 – 79 C
60 – 69 D
0 – 59 E
Week 1: Problem Solving and Software Engineering (Carrano Chapter 1)
Visual C++ Debugging
Week 2: Key Issues in Programming (Carrano Chapter 1),
Recursive Solutions (Carrano Chapter 2)
Week 3: Counting with Recursion, Recursive search of an Array (Carrano Chapter 2)
Week 4: Recursion and Inefficiency (Carrano Chapter 2),
C++ Structures (Savitch Section 6.1),
Week 5: Classes and Member Functions (Savitch Section 6.2)
Lab Exam 1 (Array Processing and Recursive Function)
Week 6: Abstract Data Types, ADT Examples (Savitch Section 6.3)
Week 7: Friend Functions (Savitch Section 8.1), Review for Test 1,
Test 1 (Carrano Chapters 1 and 2, Savitch Chapter 6)
Week 8: The Const Parameter Modifier, Overloading Operators,
Separate Compilation (Savitch Sections 8.1 and 8.2)
Week 9: String Classes (Savitch Section 10.3), List ADT (Carrano Chapter 3)
Lab Exam 2 (Class and Member Functions)
Week 10: Array Implementation of List ADT (Carrano Chapter 3),
Sorted List ADT (Carrano Chapter 3)
Week 11: Pointers (Savitch Section 11.1),
Cstring (Savitch Section 10.1)
Week 12: Memory management (Savitch Section 11.2),
Dynamic Arrays (Savitch Section 11.2)
Week 13: Destructors & Copy Constructors (Savitch Section 11.3)
Review for Test 2,
Test 2 (Savitch Chapters 6, 8, 10, and 11, Carrano Chapter 3)
Week 14: Linked Lists (Carrano Chapter 4)
Week 15: More Linked Lists Operations (deleting from, insert to, etc)
December 12: Final Examination (Everything)
8:00 - 9:40 AM (001)
10:00 – 11:40 AM (004)