Welcome to CPSC 110 Computation, programs and programming play a vital role in the work of scientists, engineers, artists and other professionals: they allow us to organize, store, analyze and visualize information; create animations, music, and online communities; control devices in our environment; develop computational models and simulations; and much much more. The major goal of this course is to introduce students to the practice of systematic problem solving through the design of programs. The course will also help you understand more deeply how computation and programs work, and how they have the power to do what they do. Do you know how to design a computer animation? Or a multi-player game? Or how to combine information from sources like eBay and Google automatically? Or a game that runs on your phone? Do you know how to use the process of writing a computer program to better understand ecosystems or Translink schedules? This course will show you how—we will explore systems like these as part of our lab projects.
The course presents an approach to systematic problem analysis and solution design, and prepares students for further course-based and/or independent learning of Computer Science skills and concepts. The course is designed to be interesting, accessible and useful to a wide range of students. No prior programming experience is assumed, and very little math and science background is required. This makes the course appropriate for all UBC students—CS majors and non-majors alike. The remainder of this syllabus contains important information for students in the course. Consult the frequently asked questions for other questions about the course. PrerequisitesThe course demands curiosity, self-discipline, and a commitment to regular practice of the design skills presented in class. No programming experience is required. Only a limited math and science background is required - grade 9 or 10 math should be sufficient. Learning GoalsThe course-level learning goals for CPSC 110 are:
ScheduleConsult the Syllabus and the Schedule for a weekly schedule of topics, learning goals, labs and problem sets, as well as dates of mid-terms.
Lecture and lab schedules are available at the student services website.
Office Hours:
Instructors:
Gregor Kiczales: Mondays, Thursdays 12-2, ICCS 311.
Feel free to check our offices at other times. If we are not busy we will be happy to talk with you.
TA HoursFollow this link for TA hours in the Demco Learning Center (DLC). Note that ICICS and the DLC are locked nights and weekends! For after hours access:
Midterms
See the Schedule for the dates and locations of the midterms.
Optional Text Materials
The optional textbook for the course is a combination of the 1st and 2nd edition of How to Design Programs,
by
Felleisen, Findler, Flatt, Krishnamurthi.
The first edition of the book is available both in the bookstore and online at http://htdp.org. The second edition is available online only at http://www.ccs.neu.edu/home/matthias/HtDP2e/htdp2e-part1.html. Computer Account and ComputerYou do not need to have your own computer to take this course. But if you do have your own laptop or notebook computer, and if you feel comfortable bringing it to class, then please go ahead and do so. You can use it for interactive work with the computer during both lecture and labs. If you do have such a computer, then bring it to your first lab to get it setup for the course. (Or, if you want to get an early start see the Setup page for instructions.)
Again, please do not worry if you do not have your own laptop or notebook computer — the software is available on the department lab computers and lecture does not depend on everyone having their own computers. In lecture we ask students to work together in pairs and many students with their own laptops actually prefer to work using paper and pencil during class. All labs are open to all students 24/7 when not actively in use for scheduled lab sections see https://www.cs.ubc.ca/students/undergrad/services/lab-availability for details. Course Announcements and Getting HelpYou must read the course Piazza page (link is in sidebar at left) at least once per day, 7 days a week. (For information on how to join the Piazza group see the 110 Setup page.) This page will be used to answer questions that you and other students ask. Unless questions are of a personal nature, use the Piazza group to ask them, this will ensure the quickest possible response. The Piazza group will also be used to make announcements of various kinds, including:
When posting a question to the course Piazza page please keep the following in mind:
Additional ways of getting help include:
Problem SetsEach week you will be required to hand in solution to a set of problems. The Schedule page describes when problem sets are due. Late problem sets will not be accepted. You should do your work using Dr Racket, and then hand in a printed copy of your working problem set solutions. In some cases we will ask you to do your work in separate files. In other cases in a single file. Print all your work, and be sure to put your name and Computer Science account id on the front. You are free to work the problem set together with one other student, but if you do so then you must do the following:
Note that you are free to work together with another student. You should not just add your name on work someone else is done. Not only is that cheating, it is also simply foolish. You will not have learned what you needed to learn from having done the problem set. Problem sets will be spot graded. In any given virtual week you will have no less than a 25% chance of having some or all of your work graded. Note that this means you will not be graded every week, which in turn means that failing to hand in a single problem set could result in your losing a large fraction of the points allocated to problem sets. Do the problem sets, every week!
LabsLabs will meet throughout the term as shown on the Schedule page. You must go to the lab section for which you are registered. The only exceptions will be for documented illness. Each lab will comprise the design of one or more programs. Most labs will be stand-alone, but some labs will span two virtual weeks. Except for the first week every lab involves pre-lab work. You will need to read the lab material ahead of lab, and do the pre-lab work before coming to lab. You can get the pre-lab material by following the links from the Syllabus page. AttendanceAttendance at lectures, labs, and of course exams is mandatory. Reading the lecture notes is not a substitute for attending lecture; material from lecture is examinable, even if it does not appear in the lecture notes. Likewise, material from the lecture notes is examinable, even if it does not appear in the lecture. Material from labs is examinable. If you must miss a lecture, you should get supplemental notes from a friend who attended lecture. If you must miss a lab you should complete the lab on your own; you may get help from TAs in DLC hours if needed.GradingThe intended grading scheme for this course is as follows:
Note:
Recorded problem set, lab and midterm exam grades are by selecting the Graded Work item in the left hand menu of this page. You will need to use your computer science account user name and password. You should notify your instructor immediately if there are any discrepancies between your recorded grade and the grade on your problem sets, labs or exams.
Missed Labs and ExamsAs a blanket policy we will drop your lowest lab grade from your final score. This gives you an automatic way to deal with a lab you could not make it to. But note that this does not excuse you from needing to know the material covered in any missed lab. All the material from all problem sets, labs, lectures, lecture notes etc. is subject to inclusion on mid-terms or the final exam. It is your responsibility to cover material you miss.
If you must miss a lab, midterm or final due to illness, then you should strive to see a doctor before the lab, before the problem set is due, or before the exam. That way you can get treatment for the illness and start getting better. You can also receive documentation showing that you were ill. You should also try to let you instructor know you will be missing the lab or midterm before the exam if possible. But in any event you must notify your instructor by email no later than 24 hours after the lab or midterm unless the severity of your medical emergency prevents that.
Students who miss a lab due to illness will receive their average grade on all completed problem sets and labs for the missing problem set or lab.
Students who miss midterm 1 due to illness will receive their midterm 2 grade for midterm 1.
Students who miss midterm 2 due to illness will receive their final exam grade for midterm 2.
Students who miss the final exam due to illness should consult the Faculty of Science Policy on missed exams immediately after (or preferably even before) the exam. Note that a student who do not complete sufficient labs, problem sets and midterms during the term may not qualify for academic concession if they miss the final.
Students who have a religious observance that conflicts with a scheduled exam must notify the instructor at least two weeks prior to the exam date.
Students who have an exam clash—multiple examinations scheduled on the same day at the same time—should contact the instructor as soon as possible. The rules for how this is handled vary a bit by term, see www.students.ubc.ca/current/exams.cfm?page=policies.
How to Have Fun and Do Well In this CourseThe course is not intended to be overly hard. It is not a "struggle you have to survive to get into CS". We are using programming tools that are designed to support learning and allow you to focus on the key concepts without having to memorize a ton of details. We intend to present a course that is interesting, fun and useful for majors and non-majors alike.That said, learning to analyze problems and design programs to solve them takes practice. And the course material builds on itself as the term goes along. So it is important that you keep up with the material. The following work practices will help you do well and enjoy the course:
Academic HonestyThe Department of Computer Science has a detailed policy regarding collaboration on academic work. All Computer Science students should familiarize themselves with that policy.You may work on problem sets alone or together with other students in the course.
No collaboration of any kind is permitted for labs, mid-terms or the final exam. |
