Ucsb CS 8
Ucsb CS 8
Ucsb CS 8
Class Overview
Students will learn fundamental principles and concepts of computers and programming, including
structured programming techniques. Students learn to use the Python interpreter and write Python
programs. We will be using Python 3 in this class (don’t use anything older than version 3.4.3).
Computer Science is the study of abstractions and algorithms. In Computer Science, an abstraction is a
useful representation of something from the real world that allows us to work with it more easily or
efficiently. An algorithm is a well-defined, step-by-step sequence of instructions that can be used to
mechanically determine the solution to some well-defined problem. Computers are machines that can
“process” algorithms with the help of code or programs.
Learning how to program requires time, perseverance, and consistent practice: exactly like
practicing a musical instrument, a field sport, or cooking a gourmet meal. There’s a science behind
programming, but it is also about technique – and that requires you to “get your hands dirty” and practice,
practice, and then practice some more! You are bound to make mistakes – and that’s ok because you will
learn from them. Making mistakes means you are learning! Do not be afraid of trying something that
you initially have no clue about! Remember that practicing early and often will make you a better
programmer in the end. This means that you should not procrastinate and wait until the last moment to do
your assignments and homework… but you knew that already, didn’t you!? ;)
Required Textbook
Python Programming In Context, 2nd Edition
by Bradley N. Miller and David L. Ranum
ISBN-13: 978-1449699390
ISBN-10: 1449699391
Class Format
This is a large lecture class that meets twice a week and is accompanied by a lab. Attending lectures and your
lab is mandatory. Attendance will be taken in labs and missing too many will result in the instructor taking
off up to a half grade from your final grade (e.g. a B- becomes a C+).
This course has multiple readings, 8-9 homework assignments, 7-8 lab assignments, 1-2 projects, 2
midterms and one final exam. You will submit homework as a hardcopy in class, submit lab and
projects assignments online, and do all the exams in the same classroom. It is really important to do the
class readings ahead of time. Class participation is vital and highly encouraged (and recognized too!)
Just as in a math classes, everything we do in this class (and almost all classes in CS) builds on all the
work that came before. So, everything is cumulative—meaning that you can’t afford to miss any classes
unless absolutely necessary. Miss two lectures in a 9 week two-lecture per week course, and you've
already skipped 10% of the course—it wouldn't be surprising if your performance (i.e. final grade) in the
course dipped by a similar amount!
You may find the workload heavy. It may even feel unreasonable compared to your other courses.
However, I assure you that it is not unreasonable, given the goal of making you a skilled beginning
programmer. Programming is a skill, and the only way to get good at it is lots and lots of practice, which
takes lots and lots of time. The usual "folklore" rule of thumb is 8–12 hours per week for a normal college
class. That means you should expect, at a minimum to put in 5–9 hours per week on this course, on top of
the 3 hours 20 minutes you spend in lecture and lab each week.
Lectures
The purpose of the lectures in this course is to guide you through the readings, homework, and labs:
• To provide an overview of how everything fits together.
• To provide hands-on demonstrations of Python programming and other things that you'll do on
your own later.
• To provide additional information that is not in the textbook (and to sometimes clarify the
textbook).
• To provide an opportunity to ask questions, and hear answers to questions asked by others.
Homework
In every Monday class, you'll be given a homework assignment that is due in the following Monday
class. There may be exceptions around or before exams, or to accommodate university holiday schedules.
These are typically pencil/paper type problems, though sometimes you'll need access to a computer to
solve them. If you don't have reliable access to a computer at home (or in your dorm), please plan your
schedule so that you can spend time in the CSIL computer lab between classes.
Homework assignments are completed on paper—they may NOT be submitted electronically—and may
ONLY be submitted in person, in the class in which they are due.
You may NOT turn in a homework assignment "on behalf of" an absent classmate, or have someone else
turn in your homework for you—doing so in this course is a form of academic dishonesty. You can work
with a “homework-buddy”, but you each have to turn in your own work and you have to disclose who
you worked with (there’s a place to do that on the homework form).
Again, please do NOT:
• Turn in homework on a day other than when it is due. No late submissions accepted.
• Have someone else turn in your homework for you (that will be considered academic dishonesty).
• Leave homework in a mailbox or slide it under a door.
• Email your homework or upload it anywhere online.
• Copy answers directly from other students or (heaven forbid!) website. Do your own work!
• Forget to cite (i.e. give credit to) your sources, if you consult your textbook, a website, or person.
Labs
The labs meet on Tuesdays at PHELP 3525 and are run by the T.As.
Attendance is taken and is mandatory.
Please do not switch your registered lab sections before clearing it with all TAs involved (space is tight in
these labs). You will likely have to switch sections with someone in order to get this to happen.
You will be given lab assignments every week. You typically will start these in the lab and finish them
in the lab, but you can use up to 1 extra day on your own time afterwards. After that, the labs are
considered late (see my late policy). The lab assignments have to be turned in by end-of-day (i.e. 11:59
PM) Wednesday, by uploading them using the submit.cs service. You can ONLY turn in your lab
assignments on submit.cs. You will learn how to use the submit.cs service in your first lab (Lab 00),
which is on Tuesday, Jan. 22nd.
In some labs, you will be asked to pair up and work with one other partner in the lab. This “pair
programming” concept is explained further in another section in this syllabus.
Again, please do NOT:
• Use anything other than submit.cs to submit your lab. So don’t email them, for example.
• Turn in labs late. They are due by end-of-day (i.e. 11:59 PM) Wednesday (except when
indicated otherwise).
• Copy answers directly from other students or websites. Do your own work!
• Forget to cite (i.e. give credit to) your sources, if you consult your textbook, a website, or person.
This can be done in the program with comments.
Projects
You will be given 1-2 programming projects to do. These will be done in groups of 2 (i.e. pair
programming) and will involve slightly more complex and inventive programming than your labs. You
will be given at least 2 weeks to complete each of these projects. More detailed information will be given
in class by the instructor. Projects, like labs, will be submitted using submit.cs.
Exams
Both the midterm and final exam are closed book. The final exam is cumulative.
The following dates are set for the exams and will not change.
If you miss any of them, you will get an F in the class:
• Midterm Exam Wednesday, 2/14 during regular class time (9:30 AM – 10:45 AM)
• Final Exam Wednesday, 3/21 from 8:00 AM – 11:00 AM
Make Up Policy
If you miss a class, you miss the opportunity for the points on that in-class assignment, or homework that
was due. Period. Generally speaking, I do not allow for makeups in this class, with few exceptions.
There is no makeup for homework or lab assignments, except for excused absences arranged and
agreed to by the instructor in advance. If you don’t turn in an assignment by the due date and time, you
will get a zero grade for that assignment.
There is no makeup for exams. This is a stricter policy than with assignments. The midterm and the
final exam dates are announced in this syllabus and are fixed. If you believe you cannot attend any of
these dates, especially the final exam, please consider dropping the class.
In rare cases, if there is a documented family emergency, documented extended illness, documented
required court appearance, or other situation beyond the students' control (with documentation) the
instructor may grant additional make up days entirely at the instructor's discretion—but this is not a
guarantee or a right. Asking for accommodation because “I already bought my plane ticket” or “I have out
of town guests that week” is a futile exercise that will get you nowhere…
In summary: homework is due every Monday in class; if you turn one in on Tuesday before 9:30 AM,
you’ll get a 20% grade penalty. After that, it’s a zero grade.
Labs are due on Wednesday by 11:59 PM via submit.cs; if you turn them in on Thursday before 11:59
PM, you will get a 20% late penalty. After that, you will get a zero grade. The same policy applies to
projects and their due dates.
I do not allow the use of cell phones in class. Please turn them off or put them on vibrate mode before you
enter the classroom. If your phone causes a distraction in class, or if I (or one of the TAs) notice you
using your phone in class, you will be asked to leave class and the class will be counted as an
unexcused absence. Additionally, I reserve the right to ban laptops from lecture at any given time if I
sense that they detract from the learning outcomes described for the class.
We also realize that working in groups has another, potentially less positive, side to it: namely the
problem of “freeloaders”. So, please:
• Do NOT “just copy” homework or code from others and claim it as your own work. That is called
plagiarism and is subject to harsh consequences from the instructor, the department, and the
university.
• Do NOT work together on assignments unless you've been specifically told that it is allowed.
A+ grades: These may be awarded to the very best performing students in the class—but the cutoff for
A+ grades will be determined at the end of the course at the discretion of the instructor (there is no pre-
determined cutoff---an average of 97 or more doesn't guarantee you an A+ grade.)
If I decide to curve the grade (it’s not guaranteed that I will), I will do so on the final class scores and not
on any individual item.
F grades: If you miss your final exam, or your midterm exam, you will receive an F, regardless of your
running score in the class. If you feel that I or the TAs have made a mistake (like adding up a grade
incorrectly), then you should certainly bring that to my attention in an expedient fashion (within one
week’s time), but engaging in grade-grubbing (for example, asking me to round up your final class
grade at the end of the quarter) is something you should avoid doing – please know that I will not engage
you in these requests (i.e. I typically ignore them). If you have any questions about how grades are
computed, please feel free to ask, and I would be happy to explain further.