UCR CS 12: Introduction to Computer Science II
Spring 2005
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.
IMPORTANT NOTICE:
If for any reason your official enrollment in this course is delayed,
you are still expected to attend all lectures and labs, and submit all assignments,
from the beginning of class. Make-ups for missed labs, tests, assignments etc. are
generally not granted.
Instructors :
Lectures:
Section 001: MWF 3:10 - 4:00 p.m.
Sproul Hall 2355, (building 523 on map)
Section 002: MWF 5:10 - 6:00 p.m.
Sproul Hall 2340, (building 523 on map)
Teaching Assistants:
Textbook:
Course Email List:
CS 12 mailing List
(send mail now or
access the archive):
ALL course and CS Department related information will be conveyed to you via email to this account.
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).
Course grading:
The course consists of 100 points:
- Practice items (30 points) -- Designed as "drills", to help you learn and to do
well on the assessment items, and evaluated essentially as satisfactory
or unsatisfactory.
- 10 pts: 9 or 10 Homeworks (will count best 8) & in-class activities.
- 10 pts: 10 Labs (will count all 10)
- 10 pts: 9 or 10 at-home programming assignments (will count best 8)
- Assessment items (70 points) -- These tests are where you demonstrate to us
your mastery of the material.
- 20 pts: Midterm exam - end of week 5
- 20 pts: Final exam
- 15 pts: 8 or 9 Quizzes - usually on Fridays, but can be any time
(will count best 7)
- 15 pts: 5 in-lab practical exams (every other week; will count best 4)
- 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. We would be delighted to give every
student an A -- so long as everyone scored 90+.
NOTE: Any of these tests may examine material covered in any part
of the course: lecture, lab, assignments, hw, assigned reading, etc.
Some material may be covered ONLY in a homework or home programming
assignment.
The following schedules 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 "Big C++".
Lecture slides for each chapter can be accessed by clicking the appropriate
reference.
Submission due times
- Homework problem sets (hw): normally set on Tuesdays, due via e-turnin
by the following Sunday at 11 pm
- Home programming assignments (assn): normally set on Tuesdays, due via
e-turnin by the following Sunday at 11 pm
- Late penalty: 10% for up to 1 day late
- 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: Introduction and review of objects (Ch 3) & vectors (Ch 9)
(Ch3 slides)
(Ch9 slides)
hw 1,
assn 1: Due via e-turnin by 11 pm, Sunday 4/3
Quiz 1 solution: S001
S002
- Week 2: Ch 6 -- Classes; Ch 8 --- Testing & Debugging
(Ch
6 slides) (Ch
8 slides)
hw 2,
assn 2: Due via e-turnin by 11 pm, Sunday 4/10
Quiz 2 solution: S001
S002
- Week 3: Ch 10 -- Pointers and Arrays
(Ch
10 slides) (Ch
9 slides)
hw 3,
assn 3: Due via e-turnin by 11 pm, Sunday 4/17
Quiz 3 solution: S001
S002
- Week 4: Ch 11 -- Inheritance
(Ch
11 slides)
hw 4,
assn 4: Due via e-turnin by 11pm, Sunday 4/24
Quiz 4 solution: S001
S002
Tarred VectorOfInts class
- Week 5: Ch 12 -- Streams
(Ch
12 slides)
hw 5,
assn 5: Due via e-turnin by 11 pm, Sunday 5/1
No Quiz
Midterm: in class, Friday 4/29
Sample exam
Solution
Mid-term exam solutions:
Section 001
Section 002
- Week 6: Ch 13 -- Object Oriented Design (OOD)
(Ch
13 slides)
hw 6,
assn 6: Due via e-turnin by 11 pm, Sunday 5/8
Quiz 5 solution
- Week 7: Ch 14 -- Recursion
(Ch
14 slides)
hw 7,
assn 7 : Due via e-turnin by 11 pm, Sunday 5/15
Quiz 6 solution: S001
S002
- Week 8: Ch 15 -- Sorting & Searching
(Ch
15 slides)
hw 8,
assn 8 : Due via e-turnin by 11pm, Sunday 5/22
Quiz 7 solution
- Week 9: Ch16 -- Intro to Data Structures
(Ch
16 slides)
hw 9,
assn 9 : Due via e-turnin by 11 pm, Monday 5/30
Quiz 8 solution: S001
S002
- Week 10: Ch 16 (cont.)& Review
hw 10,
assn 10 : Due via e-turnin by 11 pm, Sunday 6/5
Quiz 9 solution: S001
S002
SAMPLE FINAL EXAM
solution
- Final exam:
001 -- Tuesday 06/07/2005 3 to 6 p.m.
002 -- Monday 06/06/2005 7 to 10 p.m.
Lab Schedule
- (Be sure to read the Lab Rules)
- 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 practicals -- Obviously
no collaboration
- In-lecture exercises -- mostly done as teams requiring active participation.
- Homeworks -- Collaboration is strongly ENCOURAGED, although of course,
you should still submit your own solutions (cut & paste submissions will be
treated as academic dishonesty - see below).
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 strongly
ENCOURAGED, within a programming team: however, while you will be working
in teams, the programs you submit must still represent
YOUR OWN original work.
Teams may work on the algorithm together, and help debug/test
each others code.
However, copying code from ANY outside source
(any book, current or past students, past solutions (even if they are your own!),
web sites, etc.) is STRICTLY FORBIDDEN: we test every submission for
copying, and when we find it we treat it as flagrant academic
dishonesty (see below).
- 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.
- Assignment Submissions: All turned-in assignments will be turned
in electronically. Each file should
begin with our
report template header. Source code should 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!
- Quizzes and in-class activities: You will need the "personalized"
multiple choice answer sheet available here.
You should print multiple copies of your personal answer sheet, and bring
them with you to every class.
- 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, we're not exaggerating!
Please don't underestimate the time you will need to spend on this course.
These are real time amounts spent by successful past students.
- Final Exams are scheduled by the University, not by the instructor,
and are correlated to the course sections. This means you must 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.
Electronic assignment turn-in
Anonymously report suspected cheating
Anonymously Provide Comments/Suggestions
- Grades will be mailed to you on a regular basis thriughout the quarter.