Syllabus for CSC122
Computer Science II
IAI CS 912
4 Credit Hours (3/2 lecture/lab)
Face-to-Face (001) or Online ANYTIME (W01)
Fall 2024
Harper College

SECTIONS

Class will meet:

Section Time Days Room
001 11:00-12:45 MW H257 (lecture)
11:00-11:50 TR D258 (lab)
W01 It's online, silly. Just email me and I'll respond during my office hours!

from Aug 19th to Dec 13th.

FINAL TIME

Your final will be on Wednesday and Thursday of Finals week — Dec 11-Dec 12.

PREREQUISITES

CSC 121 (computer science I) with a grade of C or better

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

TEXT

Volume II of Exploring C++: The Adventure Begins, James, OER, 1st Edition, July '24 (or later) release

TECHNOLOGY

If you need software for the course (haven't already set it up last term, for instance), See Appendix A of your textbook for setup instructions of all software used in the course for Windows, macOS, Linux, and/or ChromeOS. Feel free to ask for help in any office hour or even a lab period if it's your laptop.

In addition to this site and Blackboard, we'll also be using two other sites during the term:

OTHER TEXTS/SITES
(you might find useful)

Learning Texts:

Reference Texts/Sites:

COURSE DESCRIPTION

The second in a sequence of courses for majors in Computer Science. Covers: design and implementation of large-scale problems; abstract data types; data structures (files, sets, lists, stacks, queues, and trees); program verification and complexity; recursion; dynamic concepts (memory, scope, block structures); text processing; and an introduction to searching and sorting algorithms. This course will use the same programming language as CSC 121: Computer Science I. (IAI CS911: Computer Science I). IAI CS912

STUDENT OUTCOMES (The student should...)
  1. apply skills in the topics from prerequisite CSC course including at least reference variables, static variables and constants, static methods, object-oriented design, and procedural design.
  2. extend their knowledge of the features of the modern object-oriented language used in the prerequisite CSC course.
  3. employ text file processing to solve problems that are of a larger and more complicated nature than in the prerequisite CSC course while continuing to use separate compilation models for good design breakdown.
  4. explain the following abstract data types: stacks, queues, linked lists, and binary trees all in both linked and array-based forms.
  5. use the object-oriented and generic programming features of a modern object-oriented language to solve problems including inheritance, polymorphism, templates, and operator overloading.
  6. demonstrate basic facility with recursion to solve problems.
  7. use both old and new searching and sorting techniques to demonstrate complexity and problem solving knowledge as well as basic program verification techniques.
  8. use dynamic memory in solving problems both in a class design and otherwise.

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
Tests41 %
Projects23 %
Labs18 %
Participation Activities 18 %
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 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.)

PARTICIPATION

For the participation/activities part of your grade, you'll have three categories split evenly from the 18% listed above. The first will be questions posed on the TopHat service. There will be two per lecture segment and 1-4 segments per actual lecture day.

The second category will come from topic questions in the KHP workbook (Navigating C++: The Journey Continues).

The last category will be any in-class activities we do. The first is an individual assignment — a welcome activity to refresh you on lab procedures and software. But others will be done in pairs or even small groups.

BONUS

Email has become a lost art of late but businesses still depend on it to communicate across the industry. Toward that end, I'll give you bonus percentage points for every GOOD email you write to me during the term. There will be many opportunities to email me and if you make them professional and clear, they can earn you extra points.

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 assignment types found on the website: projects or 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.

GRADING

For grading the portfolios, I'll be utilizing a technique called specifications grading. In this process, I'll give each item you hand in a rating from 0 to 2. If you get a 2, you can move on as this is the top mark. If you earn a 1, you can move on, but might consider trying it again — see below. If, though, you earn a 0, you cannot proceed until you resubmit and earn a higher score.

In order to move from one portfolio to the next, you must earn at least a 3 total for labs and at least a 1 total for projects in the current portfolio. If you earn too little points, you must revise and try again until you reach the requisite total.

Further, in order to pass the course with a C, you must earn at least an 8 in the category of labs and a 3 in the projects category. Anything less will earn a D or F depending on your percentage combo.

To earn a B, you'll have to get at least an 11 in labs and at least a 4 in projects.

To earn an A, you'll need to get higher than the B category totals.

Finally, to be clear, this all averages into your overall grade as well as stipulated above in the percentage breakdown for the course grade. But these portfolio restrictions will be enforced toward your passing of the course with certain grades.

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
Section 4.5.2 and Chapter 5 of the first volume of the OER, and Online Notes (see 121 back link...) Separate Compilation and class Review
Chapter 6 of the first volume of the OER, and Online Notes (see 121 back link...) vector Review

Core

122

Material
Chapter 8 C-style Arrays & C-Strings
Online Notes C-String/Array & string/vector Review
Section 9.1 Pointers and Iterators
Sections 9.2.1-2 Dynamic Memory Management
Section 9.2.3 Dynamic Memory with classes
Sections 9.2.4-5 Dynamic 2D Arrays and main Function Arguments
Chapter 10 Streams [\b (aka File) Processing]
Chapter 11 operator Overloading
Online Notes case study of dynamic memory and operator overloading
Chapter 13 Inheritance & Polymorphism
Chapter 14 templates

216

Introductory

Materials
Chapter 15 & Supplemental Notes Introductory Analysis
(with our Friends 'Searching' & 'Sorting'!)
Chapter 16 Recursion
Chapters 17 & 18 and Supplemental Notes Linked Lists, Stacks, and Queues
Chapter 19 & Supplemental Notes Trees and Applications

Extra/Advanced

Materials
Section 12.2 exception Handling
Section 12.1 and Online Notes Assertions for Debugging
Section 12.4 and Online Notes Lambda Functions
Section 12.3 namespace 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.