Syllabus for CSC122
Computer Science II
IAI CS 912
4 Credit Hours (3/2 lecture/lab)
Online ANYTIME
Spring 2021
Harper College

SECTIONS

Class will meet:

Section Time Days Room
W01 It's online, silly. Just email me and I'll respond during my office hours!
W02 It's online, silly. Just email me and I'll respond during my office hours!

from Jan 19th to May 21st.

FINAL TIME

Your final will be during the first two (2) days of Finals Week — May 17-May 18.

PREREQUISITES

CSC 121 (computer science I) and either MTH 134 (calculus for business and social sciences) or MTH 200 (calculus I) with grades of C or better

[it is recommended that you had a B or better in both classes to actually do well in this class — as this class is more demanding/challenging in time and intellectual difficulty]

TEXT

C++: How to Program, Deitel & Deitel, Pearson, 10th Edition

For your convenience, here are links to both the Student Companion Site for the book and to the Author's Website for the book. In particular, note the source code for the book's sample programs.

OTHER TEXTS
(you might find useful)

Big C++, Horstmann & Budd, John Wiley & Sons
Problem Solving with C++, Savitch, Addison Wesley
C++ for Business Programming, Molluzzo, Prentice Hall
SAMS Teach Yourself C++ in 24 Hours, Liberty, MacMillian
C++ from the Ground Up, Schildt, Osborne
C++: The Core Language, Satir & Brown, O'Reilley & Associates, Inc.
Practical C++ Programming, Oualline, O'Reilley & Associates, Inc.
The ANSI/ISO C++ Professional Programmer's Handbook, Kalev, Que Professional
The C++ Programming Language, Bjarne Stroustrup, Addison Wesley

COURSE DESCRIPTION

Uses an object-oriented approach to introduce the design and implementation of large scale problems. Introduces data structures: arrays, files, sets, pointers, lists, stacks, queues, trees, and graphs. Introduces program verification and complexity. Builds on previous knowledge of searching and sorting to help introduce the student to recursion as well as give practical examples of complexity analysis.

Emphasizes mathematics, engineering, science, and computer science applications.

Designed as the second of a sequence of courses (CSC 121, CSC 122, CSC 216, CSC 217) for students majoring in Computer Science.

STUDENT OUTCOMES (The student should...)
  1. be more skilled in the outcomes from prerequisite CSC course.
  2. extend their knowledge of the features of high-level/structured language.
  3. solve problems that are of a larger and more complicated nature than in the CSC 121 course.
  4. have basic knowledge of the following abstract data types: stacks, queues, linked lists, binary trees.
  5. know how to use the object-oriented features of a language to solve problems.

OBJECTIVE

To foster the student's deepening understanding of the programming process. We will continue to emphasize problem analysis and algorithm development while showing the importance of testing and documentation in generating well-crafted programs. The C++ programming language will be used.

In particular, we will be learning arrays, text file handling, pointers & iterators, basic dynamic memory management, operator overloading (including function objects), templates (both function and class), inheritance, and polymorphism. As time permits we will introduce some topics from data structures (CSC216) such as: algorithm analysis, linked lists, stacks, queues, recursion, trees, etc.

In fact, here's a sad tree-like rendition of the topic schedule for your perusal.

EVALUATION
Activity Percent
Tests44 %
Projects24 %
Labs20 %
Participation/Activities 12 %
Total100 %
Grade Percentage
A 90-
B 80- 90
C 70- 80
D 60- 70
F 0- 60
 

Also note that you cannot earn a C in this course without having shown at least a 70% competency on each and every topic covered during the semester (not a 70% average over all topics, but 70% on each topic). (See main page for your course for a topic list.)

In class activities refers to group activities (done during lecture time — ideally without a computer) and some sort of reading 'pop quizzes' (for both book readings and online notes).

The labs and projects portions of your grade will come from the three portfolios you will be handing in (see below). Tests will be done in lecture time — not take-home.

TESTING

Lecture tests consist (most often) of true/false, fill in the blank (rarely a word list), short answer, and hand-execution/debugging of code. Lecture tests may also include hand-coding of small (5-15 line) segments of code. Multiple choice can also occur, but all correct answers must be chosen (i.e. it isn't multiple guess). Finally, matching is a rare occurrence. (The online question sets make a pretty good sample of types and style of questions.)

Make-up exams (with a reasonable excuse), will be ALL essay and/or hand-coding/execution.

Also there will be tests and a cumulative final during the semester. This means that each test will be worth of your overall grade. (Yes, the final, although cumulative, is equal in weight to a regular test.)

ASSIGNMENTS

When an assignment is given (i.e. placed on the web page), you can hand it in as soon as you are done for a review of its content. ('done' here means that you've made a reasonable attempt to start the program or answer the questions. You don't have to have it perfect before you hand it in. You can even hand in something you've merely outlined/flow-charted, if it is a complete enough outline.)

I will give the checked paper back to you ASAP so that you can make any needed corrections to it before using it in a portfolio (if you so choose). You can also hand papers in as many times as you like before the portfolio is due. (Remember that this corrections policy is good for EITHER of the online assignments: projects and labs.)

Finally, every assignment will also be rated (typically between 1 and 7) as to its difficulty (1 is quite easy, 7 is fairly challenging). These ratings will help you determine what (corrected) assignments you'd like to hand in for your portfolios. Also, labs and projects often have options which can be done that will increase the level rating of the assignment.

PORTFOLIOS

Three times during the semester, you will turn in what you consider to be your best work up to that point (since the previous portfolio). Collect together your best (corrected) assignments and hand them in as a portfolio. The portfolio must contain a certain total ratings value each of labs and projects and consist of only a certain total number of items. These totals will be mentioned in the portfolio announcement on the web page and/or during class. The announcement is purposely delayed until at least a week before the due date so that you will concentrate on doing and understanding and not meeting minimum requirements.

Any assignments you turn in that exceed the total ratings value for their category will be added to an extra credit pile for review at the end of the semester. This extra credit work will be added to some part of your grade where it will do the most good (typically projects or tests).

Example: If the projects section of a portfolio said the minimum ratings value was 16 and the maximum number of projects were 4, you could choose several different combinations of project ratings to satisfy these requirements. You might choose to hand in 3 projects which were rated 6. You might choose to hand in 4 projects rated 4. You might choose to hand projects in rated at 4, 6, and 7.

You might choose to hand in a 4, a 6, and 2 7's. If you did this, I might place either the 4, the 6, or either of the 7's on the extra credit pile (the remaining items already add up to more than 16). To avoid me picking, you can mark those items you wish to be extra credit with XC or EC or XCred or Extra Credit marked in plain large type/writing at the top.

See also the portfolio page for more information.

LATE POLICY

Due dates (on portfolios) are present for a reason. If you do not turn in your papers by the due dates given, credit may be denied. (Reasonable excuses may be accepted.)

For further information, please see the portfolio page.

TENTATIVE OUTLINE

(Horizontal rules in the table demark logical separations in topic matter based on level of difficulty and/or time)

Category Week(s)   Resources   Topics
121

Review
1 Chapters 3, 4.7, 5.7, 9.1-6, 9.10-12, and Online Notes (see 121 back link...) class Review
Chapters 7, 6.17, 18.3-4, 18.6, 20.1-2, and Online Notes (see 121 back link...) vector Review
Chapters 14.1-3, 14.4.1-2, 24.12, and Online Notes (see 121 back link...) Files Review

Core

122

Material
Chapters 8, 22.8-10, 13.4.1, 9.7-10, F.4, 15.3, and 21.11 Pointers, Arrays, & C-Strings
Online Notes C-String/Array & string/vector Review
Chapter 10.9 Dynamic Memory Management
Chapters 10.10, 9.14, and 9.7-8 Dynamic Memory with classes
Chapters 14.4.3-6 and 21.12 Streams [\b (aka File) Processing]
Chapters 10.1-8, 10.11-15, and 23.3.4-5 operator Overloading
Online Notes case study of dynamic memory and operator overloading
Chapters 11, 23.7-8, 24.9, 9.15, and 12 Inheritance & Polymorphism
Chapters 18, 16.3.2-4, and 24.7 templates [& Lambdas]
Chapter 16 [Tieing templates, operator Overloading, and iterators Together]

216

Introductory

Materials
Chapter 20 & Supplemental Notes Introductory Analysis
(with our Friends 'Searching' & 'Sorting'!)
Chapter 16 & Supplemental Notes An Introduction to Data Structures
Chapter 6.18-20 Recursion
Chapter 16 & Supplemental Notes More on Data Structures
Chapters 23 & (the rest of) 24 The Standard template Library — Containers, iterators, & Algorithms

Extra/Advanced

Materials
Chapter 17 and 24.4 Exception Handling
Chapter 23.4 Name Scope Management

Always look for online notes to supplement (and sometimes correct/override) the book information.

I reserve the right to change this syllabus with sufficient warning to you.