UCR CS 10: Introduction to Computer Science I
Summer 2003
Lecture Schedule  
Lab Schedule  
Exam Schedule  
Turnin  
Previous CS10's  
In CS 010, you'll become familiar with the basic concepts underlying
computer programming, and learn to apply those principles using a
powerful and widely used programming language, C++. By the end
of the quarter, you should be able to write well-crafted, non-trivial
programs in this language.
Catalog description :
30 hours lectures; 30 hours laboratory.
Prerequisite: Math 009A (may be taken concurrently).
Solving problems through structured programming of algorithms
on computers, using the C++ object-oriented language. Topics
include variables, expressions, input/output (I/O), branches,
loops, functions, parameters, arrays, strings, file I/O,
and classes.
Also covers software design, testing, and debugging
Class web site:
www.ilearn.ucr.edu
Enrolling in this course gives you automatic access to the
UCR "ilearn" site: your login id is the name field of your ucr
student email address (name@student,ucr,edu), and your initial password is your Student
ID (no dashes or spaces).
ALL communication with the class (announcements, assignments,
handouts, etc.) will be via the ilearn site (NOT this course
outline page). Some communications may be made only via the
ilearn site, so you are expected to check it regularly.
Instructor :
Brian Linard (blinard@cs.ucr.edu)
Office hours: Monday to Thursday, 10:00 am to noon, by appointment only.
Office:
Surge Bldg. 340.
Lectures:
MTWR 4:00 to 5:30 pm in
Geology 1408
Teaching Assistant:
Titus Winters (titus@cs.ucr.edu)
Office hours held in
Surge Bldg. 282.
Lab schedule
TR 8:00 to 11:00 am
Surge Bldg. 283
Text Book:
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.
For optional books, visit the
Additional Resources section below.
Course grading:
Letter grades are assigned very approximately 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%: Theory component:
15: In-class Quizzes
20: Midterm
30: Final
35%: Practical component:
20: Programming competency (see note)
7: Style, adherence to good
coding standards
8: In-lab practical tests
Programming competency:
There are two ways of building Programming competency points
(200 points equals 20% of total score)
- Attending labs & completing the in-lab exercises
There are 10 labs, each worth 10 points (2 for attendance & punctuality,
8 for successful completion of the exercises)
- Completing home programming asignments
There are 10 assignments, each with a specific due date, and each worth 20 points
Early submission earns extra points, late submission loses points
(in 2 point increments - detailed dates are given on the individual assignment postings)
There are two requirements:
1) You must attend lab 1 (introduction), and labs 5 & 8 (lab practicals)
2) You must submit at least 3 home programming assignments.
If you do not satisfy both these requirements you cannot earn more
than a D for the practical component, and hence for the whole course.
Apart from that, it is entirely up to you how you manage the 200 programming points
(in fact, if you attend all 10 labs and complete all 10 assignments,
you could earn 300 programming points or more, thus collecting
a full 10% bonus toward your final score)
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:
6 hours/week in lecture
6 hours/week in lab
12 to 20 hours/week doing individual study (readings,
homeworks, programming, lab preparation, etc).
Please don't 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.
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
comprehensible and useful the lectures will be.
The Chapter references are to the class text book "Problem Solving with C++" by Walter Savitch
Each "unit" refers to a 2-lecture/1 lab component; i.e. we will cover 2 units per week
- Unit 1: Introduction to computers and C++ (Ch1)
- Unit 2: C++ basics: variables and assignments, I/O (Ch2)
Quiz 1
- Unit 3: Data types and expressions (Ch2)
Quiz 2
- Unit 4: Simple flow of control, program style (Ch 2)
Quiz 3
- Unit 5: Review & Midterm
- Unit 6: Functions and procedures, local variables (Ch3)
Quiz 4
- Unit 7: More on functions (Ch4)
I/O streams (Ch5)
Quiz 5
- Unit 8: Classes (Ch6)
More flow of control (Ch7)
Quiz 6
- Unit 9: Arrays (Ch10)
Quiz 7
- Unit 10: Miscellaneous / Review
Subject to change as the quarter progresses.
- Unit 1: In-lab: Basic systems intro; Hello World program; Turnin
- Unit 2: In-lab: Solving C++ syntax errors
- Unit 3: In-lab: Variables; Keyboard input
- Unit 4: In-lab: Using the debugger
More input/output; Strings; Arithmetic operators
- Unit 5: In-lab: Practical 1 (flow of control)
Nested loops
- Unit 6: In-lab: Mid-quarter evaluations; Study habits
- Unit 7: In-lab: Scope and functions
- Unit 8: In-lab: Practical 2 (functions)
Output formatting, parameter passing
- Unit 9: In-lab: Arrays
- Unit 10: In-lab: Miscellaneous / work on final project
Subject to change
- Mid-term exam: In class, Thursday July 10th
- Final exam:
- Friday July 25th, 3:30-5:30 p.m. (Subject to change)
- Material covered: You are expected to achieve a good grasp of
all material covered in lectures (which will correspond very closely to
the cited sections of the text), and all material covered in the labs,
much of which will not be covered in lectures.
- Academic dishonesty: cheating will be strongly punished
(typically with an F in the course). You can report cheating anonymously
at:
https://www.cs.ucr.edu/cheating/. Assignment submissions must
represent your own original work. Copying from any sources (web, other
books, past or current students, etc.) is strictly prohibited --
learning to program requires you to learn to solve programming problems
by yourself; using existing code and other resources becomes important
later on in your studies. While discussing assignments together is
encouraged, team coding (even of pseudo-code) or letting others
see your code are specifically not allowed. Be aware that
programs are automatically compared to the current and prior quarter's
programs for plagiarism, using a sophisticated code-comparison tool
that ignores insignificant differences (like whitespace and variable
names). If you're smart enough to fool the instructors, TAs, and
code-comparison tools, you're more than smart enough to do the programs
on your own!
A couple more notes. Be aware that a subset of exams may be photocopied,
for comparison with exams submitted for regrades. 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 must be stored away in a
place not visible (e.g., inside a backpack).
- Final Exams are scheduled by the University, not by the
instructor, and are correlated to the course sections. What that means is
that you must take the final exam scheduled for the section you are
enrolled in.
- Regrade policy: regrade requests must be submitted in
writing and within one week of the distribution of the graded
material. The entire exam/assignment may be regraded, not just the
problem in question, so the grade may go up or down. Thus, think your
regrade requests through carefully. Grade-database errors should also
be pointed out within one week of posting.
- Final grades: Per university policy, changes to your final
grade will 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.
- 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.
- Communicating with the instructors and TAs: when sending
electronic mail to the instructors or TAs, please include your
full name, course & section details, student ID number,
and UCR email address, so that we may properly identify you (remember, many
students have similar names, and instructors may be teaching several courses).
Also, please try to be polite 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 must 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!
- Reading: Read the current book sections before coming
to lecture, and attend all lectures in their entirety. To encourage these
important college study habits, we may give a few simple pop quizzes
during the quarter, at any time during lecture.
- Students are required to stay the full three hours of lab session
every week. (But see note above regarding Programming points). You'll have in-lab exercises, discussions, and
practical exams. Work ahead or on extra course-related material if you
finish early.
- During lab discussion time, students should not use the computers.
Ideally, students would move their chairs to the whiteboard area.
- Prepare for lab before arriving.
- 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.