Course Policies
Disabled Students Program (DSP)
UCSB provides academic accommodations to students with disabilities. Students with disabilities are responsible for ensuring that the Disabled Students Program (DSP) is aware of their disabilities and for providing DSP with appropriate documentation. DSP is located at 2120 Student Resource Building and serves as the campus liaison regarding issues and regulations related to students with disabilities. The DSP staff works in an advisory capacity with a variety of campus departments to ensure that equal access is provided to all disabled students. If you have a disability that requires accommodation in this class, please go see the DSP very early on in the quarter. I will only honor these types of requests for accommodation via the DSP. More information about the DSP is found here: http://dsp.sa.ucsb.edu
UCSB Policy on Academic Honesty
It is expected that students attending the University of California understand and subscribe to the ideal of academic integrity, and are willing to bear individual responsibility for their work. Any work (written or otherwise) submitted to fulfill an academic requirement must represent a student’s original work. Any act of academic dishonesty, such as cheating or plagiarism, will subject a person to University disciplinary action. Using or attempting to use materials, information, study aids, or commercial “research” services not authorized by the instructor of the course constitutes cheating. Representing the words, ideas, or concepts of another person without appropriate attribution is plagiarism. Whenever another person’s written work is utilized, whether it be a single phrase or longer, quotation marks must be used and sources cited. Paraphrasing another’s work, i.e., borrowing the ideas or concepts and putting them into one’s “own” words, must also be acknowledged. Although a person’s state of mind and intention will be considered in determining the University response to an act of academic dishonesty, this in no way lessens the responsibility of the student.
(Section A.2 from: http://www.sa.ucsb.edu/Regulations/student_conduct.aspx, Student Conduct, General Standards of Conduct)
Each student is responsible for knowing and abiding by UCSB’s policies on Academic Honesty. Any student violating these policies will earn an ‘F’ in the course and will be reported to the Academic Integrity Office . Committing acts that violate Student Conduct policies that result in course disruption are cause for suspension or dismissal from UCSB.
About Collaboration
As mentioned above, one of the things we really want to convey in this course is that real-world software development is very seldom an ‘individual sport’—it is much more often a ‘team sport’. Companies want to hire CS and CE graduates that know how to collaborate with others on producing software.
In the CS Department at UCSB, we understand the value of this. However, it puts us in a tricky position.
On the one hand, we want to encourage working together in ways that help you develop your skills and teamwork, and help you understand that programming can be a social, collaborative, creative activity—not something done only by loner nerds in cubicles. The sooner you start with activities such as pair programming, code reviews, and other collaborative software development activities, the more skill you’ll develop, and the sooner you’ll be ready for the real world. Plus, for many people, working together with others is a lot more enjoyable and fun than being a loner.
On the other hand, we need to avoid any situations where freeloaders are "coasting" through courses by leaning too much on others—never developing independent skills as programmers. This situation creates huge problems. Mostly it is damaging to the freeloaders themselves, who eventually crash and burn, perhaps far too late to choose another career path without significant difficulty. However, it also creates problems for everyone else—some hardworking students become demoralized by the unfairness of it all, and the value of a UCSB education is diminished by the freeloaders’ lack of accomplishment.
Thus, we must strike a balance.
Our emphasis on collaboration means:
- We will try to create opportunities for you to work in pairs on assignments—in some cases, we may even require it.
- We will try to create opportunities for you to develop the ability to think critically about software development by talking about and reflecting on your own code and other people's code in small groups (code reviews).
- Some in-class assignments will permit discussion with other students.
However:
- You may not "just copy" homework or code from others and claim it as your own work.
- You may not work together on assignments unless you've been specifically told that it is allowed.
The bottom line:
- We'll try to be very specific about what kinds of collaboration are permitted, and what kinds of collaboration are not permitted, and are considered a form of academic dishonesty.
- If you are not sure about whether some kind of collaboration is permitted or not, it is your responsibility to ask questions.
A final note: the emphasis on collaboration in this course does not necessarily extend to other CS courses you may take in the future.
- Each course will have its own policies, and the default policy is still: no collaboration.
- Please be sure you understand each instructor's policy on collaboration carefully, and don't assume it will be the same as that from previous courses.
- And, finally, be sure to review the UCSB Academic Honesty Policy. You should read and understand the UCSB policy on academic honesty listed below. You should also understand that I take academic honesty and personal integrity very seriously, and will do my best to uphold and enforce this UCSB policy.
Other important policies
- If you are registered for another UCSB course that overlaps with this one, you MUST HAVE specific written permission from both instructors, or I am within my rights to give you a failing grade on any work you miss as a result, and will NOT make any accommodations for you. This includes exams.
- Collaboration is only permitted when specifically allowed for—otherwise, you must do your own work.
- On most homework assignments you may collaborate with at most one other person (who must be named) but the quizzes must be done individually
- This course moves quickly. So attendance is very important. We’ll sometimes cover two or even three chapters in a given week. We need to go at that pace, because during the last week of the quarter, you can’t really start anything new, because there isn’t time to put it into practice with programming assignments. If you don’t put it into practice, you aren’t very likely to learn it in any way that is going to stick with you, so there isn’t much point in just "going through the motions".
Exceptions
If you miss a class, you miss the opportunity for the points on that in-class assignment, or homework that was due. Period.
There is no makeup, except for:
- excused absences arranged and agreed to by the instructor in advance, for official UCSB activities
- one "sick-day/personal day" per student, per quarter (see below)
To make up an assignment from a "sick-day/personal-day", you must within one week of the absence, or 24 hours before the final exam, which ever is earlier, come to office hours (this cannot be done in lab). You may only do this ONCE per quarter.
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.
About pair programming
Most of the programming work in this course will be done using a style of programming known as "pair programming". This is where two people (in rare cases, three) work together at the same terminal to solve a programming problem.
It is similar, in some ways, to having a "lab partner" in a Biology, Chemistry or Physics course.
For the assignments where pair programming is used, it is required, not optional. Here’s why:
- Pair programming is a real-world skill that is highly valued by employers.
- Many companies use pair programming extensively, including several local area employers of UCSB CS graduates.
- Companies that employ UCSB CS and CE grads tell us that our graduates have good technical skills but need better skills and working in pairs and groups to solve problems.
- Incorporating pair programming into our curriculum is part of our response to this "real-world" feedback.
- Most students find it helpful and enjoyable—UCSB CS students from 2009-2010 that were surveyed about their pair programming experiences overwhelmingly reported positive results.
- There is also evidence in the scientific literature that it improves student learning, and helps you get better grades.
To learn more about pair programming, watch the following video (it takes less than 10 minutes):
http://bit.ly/pair-programming-video
Late Lab Policy
The policy is simple, and is based on the idea that the primary purpose of the deadlines is to allow the TA manage his/her workload. The number of labs in this course requires that he/she not have to do “context switching” between grading different labs. All labs must be graded in one sitting, or he/she just won’t be able to keep up with the workload. So:
- If you want your work to be graded without penalty, turn it in on time.
- If you turn in your lab late, you RISK GETTING A ZERO.
- We will grade late labs ONLY if it creates no extra inconvenience for the graders, and we WILL impose a penalty between 10-20% (see the individual grading rubrics for the labs.)
- There is NO GUARANTEE that late labs will be graded at all. The TA will simply start work at some point after the deadline, and grade until he/she is finished. At that time, he/she will “close the books” on that particular lab, and any work not submitted at that time will NOT be considered.
Frequently Asked Questions
Do we need to bring our textbook to lecture? To lab?
It is generally not necessary to bring the textbook to lectures for CS16. It may be helpful to bring the book to lab though, as it may be a useful reference for working on programming assignments.
Are there any extra credit components in this course?
I offer extra credit to the first person to report typos in the assigned readings from the book, or the homework assignments themselves. Thus, starting earlier gives you a better chance to be the first one to report the typo. There is a special forum on Gauchospace for reporting typos—the time it is first reported there is what counts for extra credit (reporting it by email or in person or in class is nice, but does not earn the extra credit.) You can also get extra credit for exceptional participation and dissemination of good information on the class discussion forum
Do we need to bring laptops to class?
You do not need to bring a laptop to class.
Are we permitted to use laptops during lecture?
Research has shown that the use of electronic devices for purposed othen than note-taking or class related activities hampers the learning of both the student and those sitting close by. Although you are allowed to bring your laptop or mobile device, you may not use it to read email or Facebook, play games, etc. That latter use can be a real distraction to others sitting behind that student, not to mention the distraction to the laptop user herself/himself.
The instructor holds the right to ask you to leave the class if you fail to comply with the course policy on using devices. If I find that this isn’t working out, I reserve the right to change the policy and implement a ban on laptops in lecture (where the only exception would be someone with a medically certified disability that needs the laptop for ADA-compliance.)
So, you don’t want to be "that guy" or "that gal" that spoils it for everyone else. If you use a laptop, use it for legit purposes during class time.
What about laptops in lab?
Sometimes students want to use their laptops in lab instead of using the Linux computers provided. I would like to strongly discourage this for a variety of reasons:
- learning to use the Linux environment is one of the learning objectives of the course—that environment is used in later CS courses (CS24,CS32,CS48,CS56, and almost every upper division programming course.)
- using the Linux environment helps facilitate the whole "pair programming" thing—if it's "your" computer, your pair partner is likely to feel less comfortable than you. Using the shared machines "levels the playing field".
This isn’t an absolute prohibition. If the Linux machines are having software or hardware problems, or there is a problem with your account—these things happen rarely, but they do happen sometimes—then, sure, go ahead and use the laptop during lab. But otherwise, please stick with the machines provided.
Do we need to download anything to our laptops or computers at home/in the dorm?
If you are using Windows, you definitely will want to download two programs: PuTTY and XMing OR MobaXterm and Xming. I recommend the latter combination. These programs allow you to access the Linux environment on the CoE computers from your Windows machine. (Mac and Linux users usually have tools to do that already installed as part of the operating system called "ssh" and "X11".)
Disclaimer
The course policies have been provided as accurately as possible, but are subject to change at the instructor’s discretion, within the bounds of UC policy.