UCR CS 12: Introduction to Computer Science II
Spring 2004
THIS PAGE IS UNDER CONSTRUCTION.
Basic Information  
Lecture Schedule  
Lab Schedule  
Turnin  
Previous CS12's  
In CS 12, you'll learn to solve larger programming problems and will
also touch on some of the deeper concepts underlying Computer Science.
And you will learn to work with others (the computing field is, contrary
to some beliefs, a very social discipline).
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 are
dropped automatically by the campus system a few weeks into the quarter.
Instructor :
Dr. Brian Linard (blinard@cs.ucr.edu).
Office hours:
Tuesdays 10 am to 6 pm, by appointment only
(email me with a proposed time by Monday afternoon,
and I'll confirm by Monday night).
Office:
Surge Bldg. 340
Lectures:
Section 001: MWF 1:10 - 2:00 p.m.
GEOL 1408
Section 002: MWF 2:10 - 3:00 p.m.
GEOL 1408
Teaching Assistants:
TA Office hours are usually held held in
Surge Bldg. 282.
David Sheldon (dsheldon@cs.ucr.edu).
Office hours TBA.
Guobiao Mei (gmei@cs.ucr.edu).
Office hours TBA.
Ashish Sharma (asharma@cs.ucr.edu).
Office hours TBA.
Textbook:
Problem solving with C++
- the object of programming,
by Walter Savitch, fourth edition, Addison Wesley.
You can download code samples & powerpoint presentations of the text from the web site.
Also visit the
Additional Resources section below.
Course Email List:
CS 12 mailing List
(send mail now or
access the
archive):
ALL course related information will be conveyed to you via email.
Most students will be automatically subscribed to this mailing list
when enrolled in the course. However, it is up to you to ensure that you
are in fact subscribed (you can go to the links above to check the subscription list).
All communications from the CS department will be to your cs (or other ucr)
email account, and all communications from you to the department must also originate
from the same account. Make sure you make this your primary account, or at least have it
forward all mail to your primary account.
Course grading:
The course consists of 100 points:
- Practice items (20 points) -- Designed to help you learn and to do
well on the assessment items, and evaluated essentially as
satisfactory or unsatisfactory.
- 5 pts: Attendance/In-class exercises -- approx. 0.5 pts per week
- 5 pts: Homeworks -- approx. 7 @ .7 pt -- must complete 5 of 7
satisfactorily, else course grade cannot exceed D+.
- 10 pts: In-lab exercises -- approx. 10 @ 1 pt per week
- Assessment items (80 points) -- Mainly to determine
whether you are learning, and to also help you learn by studying.
Graded as usual.
- 25 pts: Midterm exam
- 25 pts: Final exam
- 10 pts: Quizzes -- approx. 6 @ 2 pts, drop lowest
- 16 pts: Home programming assignments -- approx. 8 @ 2 pts
- 4 pts: In-lab practical exam (1 or 2)
All these tests may examine material covered in any part of the course: lecture,
lab, assigned reading. Some material may be covered ONLY in a homework or home
programming assignment.
Grades will be assigned using a conventional grading scale:
100-90 A, 89-80 B, 79-70 C, 69-60 D, 59-0 F. +/- grades will be given.
Students are NOT competing against one another, but rather against the
scale -- all students can get good grades if all do well.
We may adjust ("curve") an individual assessment item if such
adjusting helps the class.
Schedules below are subject to change as the quarter progresses.
Read the book before lecture! Reading ahead is one of the most effective
ways of doing better in class -- you'll be amazed how much more
useful the lectures will be. We'll follow the book closely.
The Chapter references are to the class text book "Problem Solving with C++"
by Walter Savitch.
Lecture slides for each chapter can be accessed by clicking the
appropriate reference.
Submission due times
- Homework problem sets (hw): normally set on Fridays, due via e-turnin
by the following Friday at 11 pm
- Home programming assignments (assn): normally set on Fridays, due via
e-turnin by the Saturday of the following week at 11 pm
- Late penalty (before the midterm): 5% for up to 1 day late, 10% for 2 days,
15% for 3 days, not accepted after 3 days.
- Late penalty (after the midterm): 10% for up to 1 day late, 20% for 2 days,
30% for 3 days, not accepted after 3 days.
- BONUS for EARLY submission: 5% for more than 1 day early, 10% for 2 days early,
15% for 3 days or more early.
- Quizzes: Generally on Fridays (but pop-quizzes can be sprung at any
time of day or night <g>).
Make sure you have a few copies of your
personalized answer sheet
with you in all classes (only the first page is needed).
Lecture Schedule
- Week 1: Ch1-5, Ch7 & Ch10.3 -- Intro and review
(Ch1 slides)
(Ch2 slides)
(Ch3 slides)
(Ch4 slides)
(Ch5 slides)
(Ch7 slides)
(Ch10 slides)
hw 1: Due via e-turnin, Friday 4/2, 11pm
assn 1: Due via e-turnin, Saturday 4/3, 11 pm
quiz 1 solution
- Week 2: Ch10.5 -- Multidimensional arrays; Ch12.1 -- Pointers
(Ch10 slides)
(Ch12 slides)
hw 2: Due Friday 4/9, 11 pm
assn 2: Due Saturday 4/10, 11 pm
assn 2 grading rubric
assn 2 solution
quiz 2 solution
- Week 3: Ch12.2 -- Dynamic arrays; Ch6 -- Intro to classes
(Ch12 slides)
(Ch6 slides)
hw 3: Due Friday 4/16, 11 pm
assn 3: Due Saturday 4/17, 11 pm
assn 3 grading rubric
assn 3 solution
Quiz 3 solution
- Week 4: Ch11.2 -- The string class
(Ch11 slides)
hw 4: Due Friday 4/23, 11 pm
assn 4: Due Saturday 4/24, 11 pm
assn 4 grading rubric
assn 4 solution
Quiz 4 solution
- Week 5: Ch8 -- More classes! -- MIDTERM EXAM
(Ch8 slides)
hw 5: Due THURSDAY 4/29, 11 pm
assn 5: Due Saturday 5/1, 11 pm
assn 5 grading rubric
assn 5 solution (using named functions)
assn 5 solution (using overloaded operators)
Midterm: in class, Friday 4/30 .... Sample exam
Sample exam solution
Midterm exam solution
- Week 6: Ch9 -- Separate Compilation & Namespaces; Ch10.4 -- Arrays in classes
(Ch9 slides)
(Ch10 slides)
hw 6: Due Monday 5/10, 11 pm
assn 6: Due Monday 5/10, 11 pm
Sample names file for testing
assn 6 grading rubric
assn 6 solution
FullName header file
FullName implementation file
- Week 7: Ch12.3 -- Dynamic arrays in classes; Ch15.1 -- Nodes & Linked Lists
(Ch12 slides)
(Ch15 slides)
hw 7: Due Monday 5/17, 11 pm
assn 7: Due Tuesday 5/18, 11 pm
assn 7 grading rubric
assn 7 solution
- Week 8: Ch15 -- Nodes & Linked Lists (continued)
(Ch15 slides)
Quiz 6 solution
- Week 9: Ch13 -- Recursion
(Ch13 slides)
hw 8: Due Friday 5/28, 11 pm
assn 8: Due Sunday 5/30, 11 pm
assn 8 grading rubric
assn 8 solution
Quiz 7 solution
- Week 10: Ch14 -- Templates; Review
(Ch14 slides)
Quiz 8 solution
- Final exam:
Sample final exam solution
001 -- 06/9/2004 8 to 11 a.m.
002 -- 06/9/2004 3 to 6 p.m.
Lab Schedule
- Material covered: As mentioned above, the course consists of
all material covered in lectures, labs, assigned reading, programming
assignments, etc. While there is considerable overlap among these elements,
they are to be considered separate and individually essential building
blocks of your introduction to the art and science of computer programming.
- Collaboration policy
In general, we have found that one of the best predictors of success in these
courses is participation in a study group of some kind. We encourage you to
work together and learn from each other in as many ways as possible, and we will
provide any assistance we can to make this happen.
However, we also have to assess each student individually, so there are very
explicit boundaries to collaboration:
- Midterm, final, quizzes, lab practical -- Obviously
no collaboration
- In-lecture exercises -- Dependent on instructor instructions for
particular exercise.
- Homeworks -- Collaboration is strongly ENCOURAGED, although of course,
you should still submit your own solutions. In the past, many questions
on the midterm and final exams have been taken directly from homeworks.
- In-lab exercises -- Collaboration is strongly ENCOURAGED. If you
complete an exercise, feel free to help others -- teaching
enhances your own learning.
- Home programming assignments -- Collaboration is strictly FORBIDDEN.
Programs must represent YOUR OWN original
work. Sharing code or team-coding are not allowed. Copying
code from ANY source (any book, current or past students, past
solutions, the web, etc.) is not allowed.
Cooperation to the extent of helping to debug, or
discussing the general approach to solving the problem is encouraged, but
should never involve communicating code or even pseudo-code or explicit algorithms.
Your code must be unique -- if it is not, we will find out,
and will treat it as a case of flagrant academic dishonesty.
- Academic dishonesty: cheating of any sort is severely punished.
Report cheating (anonymously if you wish)
at:
https://www.cs.ucr.edu/cheating/.
We use a powerful
tool that automatically compares all programs (this quarter
and from past quarters too), neglecting changes in variable names,
spacing, etc., and detects copied code. If you are smart enough to
outwit the tool, you are smart enough to write the program yourself.
We regularly catch several cases of copying in the course EVERY QUARTER,
with severe penalties given.
Other forms of cheating, such as lying to an instructor in order to
be allowed to make up a test, or copying on a quiz, etc., are all treated
with the same severity.
PLEASE, don't risk it!! We hate failing students!!
- Regrade policy: regrade requests must be submitted in
writing and within one week of the posting of the relevant grades.
Likewise, grade-database errors should be pointed out within one week of posting.
- Communicating with the instructors and TAs: when emailing your
instructors or TAs, please remember that
many students have the same name, and your instructor may be teaching
other courses too. So please give your full name and list the
course you are referring to, and preferably include your student ID
number. You should use your UCR email account
(remember that UCR sends many official notices now only
by email). Please try to be polite and professional, and use
reasonable grammar and formatting.
- Submissions: All turned-in assignments
will be turned in electronically.
Each file should begin with our
report
template header. Source code shoudl comply with professionally
accepted
coding
standards. Also, you must include a section explaining the
design, structure, etc of your program and how it works. Comments in
source code are important, but they are
not a replacement for an explanatory section. Please
remember that successfully writing a computer program that compiles and
runs correctly is not something anyone can do in just a few minutes,
even when it looks easy. Debugging typically takes three times
longer than figuring out how to write your program. So don't leave
your programming assignments to the last minute!
- Lab attendance : is required for the full 3-hour lab.
If you finish early, help others (teaching increases your own
learning), read ahead, work on your at-home program assignments, etc.
- Lab enrollment : To reduce disruptions and provide for the
best educational
environment, all persons in lab during scheduled lab time
should be formally registered in that section. In general, no
swapping sections and no unregistered people in the lab are allowed,
even if there are extra computers.
- Switching/adding/dropping lab and lecture sections: all
add, drop, and section changes of all lower division Computer Science
courses, after the period when students can do so electronically is over,
are done through the College of Engineering's Student Affairs
office. Neither the instructors nor the CS department itself can sign any
add/drop forms, nor can they arrange for section changes. Please go to
Student Affairs, Bourns Hall A159, for any such changes.
- Time Requirements: This is a four-unit CS course. As such,
you should expect to spend 3 hours/week in lecture, 3 hours/week in lab,
and 6 to 10 hours/week doing individual study (readings,
hws, programming, lab preparation, etc) -- no exaggerating here!
Please don't underestimate the time you will need to spend on this
course. These are real time amounts spent by successful past
students. Computer Science and Engineering are challenging disciplines
requiring extensive time to master -- it's worth it in the end
(great jobs, great pay, respect, etc.), but those things don't come
for free. So practice, practice, practice! Work hard in school, then
reap the rewards of a great career.
- Final Exams are scheduled by the University, not by the
instructor, and are correlated to the course sections. This means
you take the final exam scheduled for the section you are enrolled in.
- Final grades: Per university policy, changes to your final
grade can be made only in the event of a clerical error.
Asking your instructor how far you were from a cutoff and what
extra work you can do to improve the grade is not appropriate.