UCR CS 12: Introduction to Computer Science II

Spring Quarter 2003: March 26, 2003 - June 13, 2003


Lecture Schedule Lab Schedule Downloadable Material
Electronic Turn-in Grades Course Email List
Anonymously Report Suspected Cheating Anonymously Provide Comments/Suggestions Previous CS12's

Overview

In CS 12, you'll learn to solve larger programming problems and will also touch on some of the deeper concepts underlying Computer Science. Hopefully you'll also have fun too!

Catalog description: CS 12. Introduction to Computer Science for Science, Mathematics, and Engineering II. (4) Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 10 with a grade of "C-" or better; familiarity with C or C++ language. Structured and object-oriented programming in C++, emphasizing good programming principles and development of substantial programs. Topics include recursion, pointers, linked lists, abstract data types, and libraries. Also covers software engineering principles.

Note: students receiving less than a C- in the CS 10 prerequisite will be dropped automatically a few weeks into the quarter.

Basic information

Instructors and office hours:
Wagner Truppel (wagner@cs.ucr.edu)
Tue & Thu, 3:00 pm - 4:00 pm, by appointment only, requested by email, and not guaranteed unless you receive a confirmation reply.

Office: Surge Bldg. 340.
Teaching Assistants and office hours:
Titus Winters (titus@cs.ucr.edu)
Fri, 2:00 pm - 3:00 pm.
Dale Kim (dkim@cs.ucr.edu)
Mon, 1:00 pm - 2:00 pm.
Danlin Zhang (dzhang@cs.ucr.edu)
Wed, 12:00 pm - 1:00 pm.
Held in Surge Bldg. 282.
Lectures:
Section 1: Tue & Thu 6:40 pm - 8:00 pm in R. G. Sproul Hall 1340.
Section 2: Tue & Thu 8:10 am - 9:30 am in R. G. Sproul Hall 1102.
Labs:
Lab attendance is mandatory. You are expected to stay in the lab for the entire lab session, working on material related to this course.

Section 21: Mon 6:10 pm - 9:00 pm in Surge Bldg. 172.
Section 22: Tue 8:10 am - 11:00 am in Surge Bldg. 172.
Section 23: Wed 6:10 pm - 9:00 pm in Surge Bldg. 172.
Section 24: Thu 8:10 am - 11:00 am in Surge Bldg. 172.
Section 25: Thu 6:10 pm - 9:00 pm in Surge Bldg. 172.
Section 26: Fri 2:10 pm - 5:00 pm in Surge Bldg. 172.
Books:
Required: Problem Solving With C++, W. Savitch, 4th ed., 2003 Addison-Wesley.
Please consult the errata pages for the book because there are always errors and typos in every book, which can make you waste a great deal of time. The errata pages are typically accessible from the book's web site. In addition, you might want to download Savitch's PowerPoint slides for the book. I may occasionally use those slides in the lectures and having your own copy is very helpful. The slides are available for download from the book's web page.

For optional books, visit the Additional Resources section below.
Extra (Optional) Readings:
In addtion to the required readings, I've made available photocopies of certain book chapters which I believe have clear presentations of some of the material to be covered in the course. This is not mandatory reading. This extra material is accessible from the UCR Printing and Reprographics Office on campus, next to the UCR Bookstore's entrance. Just ask for the CS 12 Readings.
Course grading:
Letter grades are roughly assigned according to the usual 90/80/70/60 scale out of 100 total course points, with 90 and above corresponding to an A, 80 and above to a B, 70 and above to a C, 60 and above to a D, and less than 60 to an F. +/- grades will likely be given. A+'s will be given to students in the high 90's who also have turned in all required material and many of the challenge in-lab excercises. The course is divided into two grading components, combined as a weighted sum to total 100 points:

65% Lecture component:
15% Quizzes and/or homework assignments.
20% Midterm.
30% Final.
35% Lab component:
12% In-lab programming exercises, attendance, participation, and adherence to coding standards.
8% In-lab practical exams.
15% Take-home programming assignments.
To ensure minimum competency in successive courses requiring a C- or better in this course, the following grading scheme will be used: a C- minimum in both components is necessary to achieve a C- minimum for the final course grade, regardless of the components' weighted sum; otherwise, the final course grade will be no greater than a D+. For example, a B in the lab component and a D in the lecture component might yield a weighted sum of a C, but would instead result in a final course grade of D+. A C- in either component corresponds to roughly 70% of the total points for that component.
Approximate Time Requirements:
This is a four-unit CS course. As such, you should expect to spend the following approximate amount of time:
3 hours/week attending the lectures.
3 hours/week attending the lab sessions.
6 to 10 hours/week doing individual study (readings, homeworks, programming, lab preparation, etc).
Please do not underestimate the time you will need to spend on this course. These are real time amounts spent by average successful past students. Computer Science and Engineering are challenging disciplines requiring extensive time to master.
Course evaluation:
We may provide midterm in addition to the end-of-term course evaluations. Midterm evaluations are an opportunity for students to let us know what is working and what we can improve on, while there's still time to change.

Please help us to help you by filling out the course evaluation forms.

Lecture schedule

Subject to change as the quarter progresses.

Please note that even though almost all the chapters in Savitch's book will be covered in the lectures, only a few of those will be covered with the level of detail presented in the book. Therefore, it's crucial that you read the book as we go along.

Do not put off reading the assignments or you will risk falling behind. Reading ahead is one of the most effective ways of doing better in class -- you'll be amazed how much more comprehensible and useful the lectures will be.

Date Topics Readings
Tue
Apr 01
Course overview.
Review of some basic ideas behind computer programming: binary numbers, computer organization, programming languages, compilers, linkers, executables.
Review chapters 1 and 2, then read the handout on computer organization. [handout 1]
Thu
Apr 03
No lecture today.
Tue
Apr 08
Review of Procedural Programming: top-down and bottom-up approaches to solving programming problems.
Review of elementary C++: basic data types, variables, operators, expressions, flow of control, functions, call by value, call by reference, function overloading.
Read chapters 3 and 4 to review the material you learned in CS 10.
Thu
Apr 10
Introduction to Data Structures.
Elementary Data Structures: Arrays.
C++ and statically defined arrays.
Read sections 10.1, 10.2, and 10.3.
Tue
Apr 15
Elementary Data Structures: Stacks.
Functions and Activation Frames.
Read the handout on stacks and activation frames. [handout 2]
Thu
Apr 17
The Divide-and-Conquer approach to solving programming problems.
Recursion [Tower of Hanoi demo].
Read chapter 13. Recursion is non-intuitive at first, so make sure to read this chapter carefully.
Tue
Apr 22
Quiz 1.
C++ Structures.
C++ Pointers and Dynamic Arrays.
C++ Static and Dynamic Memory Allocation.
Read sections 6.1, 12.1, and 12.2. Pointers confuse many beginners, so read those sections very carefully.
Thu
Apr 24
Introduction to Object-Oriented Programming.
C++ Classes.
Brief introduction to UML.
Read sections 6.2 and 6.3.
Tue
Apr 29
Midterm Exam
Thu
May 01
C++ Constructors.
C++ Namespaces.
Read chapter 9.
Tue
May 06
C++ Operator Overloading, Friends, and References.
Classes and Dynamic Memory Allocation, Destructors.
Read chapter 8, sections 10.4 and 12.3.
Thu
May 08
The C++ String, Stream, and Vector classes. Read sections 5.1, 5.2, 5.3, 11.2, and 11.3. Some of these sections are material you've seen in CS 10.
Tue
May 13
Quiz 2.
Inheritance I.
Read section 16.1.
Thu
May 15
Inheritance II.
Polymorphism I.
Read sections 16.2 and 16.3.
Tue
May 20
Polymorphism II. Read CS 12 readings.
Thu
May 22
Quiz 3.
Abstract Data Types.
C++ Templates.
Read chapter 14.
Tue
May 27
Elementary Data Structures: Linked Lists I. Read section 15.1.
Thu
May 29
Elementary Data Structures: Linked Lists II. Read section 15.2.
Tue
Jun 03
Quiz 4.
[unscheduled material]
Thu
Jun 05
[unscheduled material]
Thu
Jun 12
Section 2 Final Exam: 8:00 am - 11:00 am
Fri
Jun 13
Section 1 Final Exam: 7:00 pm - 10:00 pm

Lab schedule

Subject to change as the quarter progresses.

Home programming assignments are due at 8:00 pm on the due date, unless indicated otherwise.

Week Topics/Activities Assignments
1
Mar 31 - Apr 4
Login assignments.
How to send and read email using Pine.
How to turn in your work electronically.
Basic UNIX commands, Emacs, gcc.
basic UNIX commands.
2
Apr 7 - Apr 11
g++
Makefiles
Man pages
basic programming tools.
3
Apr 14 - Apr 18
Arrays array exercises
4
Apr 21 - Apr 25
Testing and Recursion Code testing and recursive functions
6
May 5 - May 9
Using the Debugger GDB
7
May 12 - May 16
Vectors Vectors & Array Exercises
8
May 19 - May 23
Lab Practical
Static modifiers
Lots of Static
10
June 2 - June 6
Arrays, Classes
Final Review
Pointers, Arrays, Classes, Oh My!

Material available for download:

Handouts:

1: Intro to computer organization pdf
2: Intro to stacks and activation frames pdf

Lecture slides:

My own Savitch's
Lec 1: pdf / pps -
Lec 2: pdf / pps -
Lec 3: pdf / pps pdf / pps [Ch. 10]
Lec 4: pdf / pps -
Lec 5: pdf / pps -
Lec 6: pdf / pps -
Lec 7: pdf / pps -
Lec 8: pdf / pps -
Lec 9: pdf / pps -
Lec 10: pdf / pps -
Lec 11: pdf / pps -
Lec 12: pdf / pps -
Lec 13: pdf / pps -

Demos:

1: The Towers of Hanoi puzzle, implemented as both an applet and a stand-alone java application. This demo requires Java 1.2 or higher. html / jar

Home programming projects:

Assignment Due Date
1: Caesar Cipher Sunday, April 13, 8pm
2: Mastermind Sunday, April 27th, 8pm
3: Maze Solver Sunday, May 18th, 8pm
4: Fairytales and Object Oriented Programming Sunday, June 1st, 8pm

Quizzes:

Questions / Solutions
1: pdf
2: pdf
3: -

Exams:

Exam Questions / Solutions
Midterm pdf

General course features and policies (please read these carefully)

Lab guidelines (please read these carefully)

Grades

Grades as of 9:00am, 6-11-03 are posted Here

Course email list

CS 12 mailing List (send mail now or access the archive): Be sure to sign up to receive important announcements, which will be made only through the course email list. You must use your CS or EE account, or else some other UCR account, so be sure to learn how to read those accounts or at least automatically forward messages to your personal email address (just create in your home directory a file named ".forward" containing your personal email address).

Additional Resources


© 2003 Wagner Truppel. All rights reserved.