UCR CS 12: Introduction to Computer Science II
Winter 2004
THIS PAGE IS UNDER CONSTRUCTION.
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(s) :
Section 001: David Williams (williams@cs.ucr.edu).
Office hours: TBA
Office:
Surge Bldg. TBA
Section 002: Dr. Brian Linard (blinard@cs.ucr.edu).
Office hours:
Tuesdays 10 am to 6 pm, by appointment
(email me with a proposed time by Monday afternoon,
and I'll confirm by Monday night).
Office:
Surge Bldg. 340
Lectures:
Section 001: MWF 9:10 - 10:00 a.m.
HMNSS 1503
Section 002: MWF 2:10-3:00
SPR 2340
Teaching Assistants:
Office hours held in
Surge Bldg. 282.
David Sheldon (dsheldon@cs.ucr.edu).
Office hours TBA.
Guobiao Mei (gmei@cs.ucr.edu).
Office hours TBA.
Xiaopeng Xi (xxi@cs.ucr.edu).
Office hours TBA.
Bhrigu Celly (bcelly@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): Be sure to sign up to receive important
announcements and other information. 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).
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: In-class exercises -- roughly 0.5 pts per week, may vary
(easy if you attend lectures and stay current with the readings)
- 5 pts: Homeworks -- 7 @ .7 pt -- must complete 5 of 7
satisfactorily, else course grade cannot exceed D+.
- 10 pts: In-lab exercises -- 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
- 25 pts: Final
- 10 pts: Quizzes -- 6 @ 2 pts, drop lowest
- 16 pts: At-home programs (8 @ 2 pts)
- 4 pts: In-lab practical exam (1 or 2)
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.
- Week 1: Ch1-5 & Ch7 -- Intro and review
(Ch1 slides)
(Ch2 slides)
(Ch3 slides)
(Ch4 slides)
(Ch5 slides)
(Ch7 slides)
Homework 1: Due start of class, Wednesday 1/14, hard copy
Assignment 1: Due Friday 1/16, 11 pm, electronic turnin
Assignment 1 solution
- Week 2: Ch6 -- Defining classes
(Ch6 slides)
Homework 2: Due Wednesday 1/21, 11 pm, electronic turnin
Assignment 2: Due Friday 1/23, 11 pm, electronic turnin
Assignment 2 solution
- Week 3: Ch6 -- Classes continued
Homework 3: Due Wednesday 1/28, 11 pm, electronic turnin
Assignment 3: Due SATURDAY 1/31, 11 pm, electronic turnin
Assignment 3 solution
Quiz 1 solution
- Week 4: Ch8 -- Classes III
(Ch8 slides)
Homework 4: Due Wednesday 2/4, 11 pm, electronic turnin
Assignment 4: Due Friday 2/6, 11 pm, electronic turnin
Assignment 4 solution
Midterm: in class Friday 1/30 .... Fall 2003 midterm exam, with solutions
midterm exam solution
- Week 5: Ch9 -- Separate Compilation and Namespaces
(Ch9 slides)
Homework 5: Due Wednesday 2/11, 11 pm, electronic turnin
Assignment 5: Due Friday 2/13, 11 pm, electronic turnin
Assignment 5 solution
- Week 6: Ch10 -- Arrays in classes (Review 10.1-10.3
(Ch10 slides)
Ch11.2 -- The "string" class
(Ch11 slides)
Homework 6: Due Wednesday 2/18, 11 pm, electronic turnin
Assignment 6: Due Friday 2/20, 11 pm, electronic turnin
Assignment 6 solution
FullName header file
FullName implementation file
Sample names file for testing FullName class
Quiz 2 solution
- Week 7: Ch12 -- Pointers and dynamic arrays
(Ch12 slides)
Homework 7: Due THURSDAY 2/26, 11 pm, electronic turnin
Assignment 7: Due SATURDAY 2/28, 11 pm, electronic turnin
Sample names & ids file for testing Student class
- Week 8: Ch13.1-.2 -- Recursion
(Ch13 slides)
Homework 8: Due Wednesday 3/3, 11 pm, electronic turnin
Assignment 8: Due Friday 3/5, 11 pm, electronic turnin
- Week 9: Ch14 -- Templates
(Ch14 slides)
Homework 9: Due Wednesday 3/10, 11 pm, electronic turnin
There is no programming assignment due in week 10
- Week 10: Ch15 -- Pointers and linked lists
(Ch15 slides)
- Final exam:
001 -- 03/17/2004 8 to 11 a.m.
002 -- 03/18/2004 3 to 6 p.m.
- Material covered: You'll be responsible for learning
material covered in lecture, in the textbook, and in lab. We expect
you to read the textbook; lecture only emphasizes key material, but
does not cover all required material alone.
- Collaboration policy
(TA/instructor may override for particular assignment):
- Midterm, final, quizzes, lab practical -- Obviously
no collaboration
- In-lecture exercises -- Dependent on instructor instructions for
particular exercise.
- Homeworks --
Collaboration strongly ENCOURAGED. Study groups are great.
You should still do your own solution, and should not turn
in *identical* solutions as others, but similar solutions
are O.K. Remember though -- these are designed to help you
on the assesment items, so relying too heavily on others will
hurt you during assessment. Also, we may give homework problems
whose answers are in the book. That's so you get quick feedback;
you should submit your own answers, not merely copies of the
book's answers.
- In-lab exercises -- Collaboration strongly ENCOURAGED. If you
complete an exercise, feel free to help others -- teaching
enhances your own learning.
- At-home programming assignments -- Limited collaboration may
be acceptable, but 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, etc.) is not allowed. Collaboration may consist of
discussing the general approach to solving the problem, but
should not involve communicating in code or even pseudo-code.
Students may help others find bugs. Your code must be
unique -- the odds of randomly obtained highly-similar code
is very low. Computing, like surgery or driving a car or
playing golf, can only be learned by doing it yourself!
- Academic dishonesty: cheating is strongly punished.
Report cheating (anonymously if you wish)
at:
https://www.cs.ucr.edu/cheating/. Note: we use a powerful
commercial 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
outsmart 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. PLEASE, don't risk it!!
A couple more notes. Be aware that exams are photocopied,
and will be compared to exams submitted for regrades -- so don't make
changes on graded exams. Also, be aware
that lying to an instructor in order to be able to make up a missed exam
or in other ways to obtain a better grade can be treated as academic
dishonesty. During exams, cell phones and PDAs must be stored away in a
place not visible (e.g., inside a backpack) and should be turned off.
- Regrade policy: regrade requests must be submitted in
writing and within one week of the distribution of the graded
material. Grade-database errors should also
be pointed out within one week of posting.
- Communicating with the instructors and TAs: when sending
electronic mail to the 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.
- Cell phones: During lectures and lab sessions, please
turn off your cell phone.
- Homework and lab reports: 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.
- Late/early policy for at-home programs:
- Late penalty for at-home programs due before the midterm:
5% for 1-day late, 10% for 2-days, 15% for 3-days, not accepted
after 3 days.
- Late penalty for at-home programs due after the midterm:
10% for 1-day late, 20% for 2-days, 30% for 3-days, not accepted
after 3 days.
- BONUS for any at-home program turned in EARLY:
2% for 1-day early, 4% for 2-days early, 6% for 3-days or more early.
- "Day early/late" is defined as 24 hours before/after the due time.
- 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,
homeworks, 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.