CSCI 261: Computer Science II — Spring 2013

Course Syllabus

Instructor

Joel Ross
email: jross@pugetsound.edu
office: Thompson 405
phone: x3558

Class Meetings

Lecture: Mon/Wed/Fri 9:00am to 9:50am (Thompson 399)
Lab: Tues 9:00am (Thompson 409, with Dan Drake)

Website: http://cs.pugetsound.edu/~jross/courses/cs261/
Moodle: https://moodle.pugetsound.edu/moodle/course/view.php?id=5558

Office Hours

Mon through Fri 11:00am to 12:00pm, whenever my office door is open, or by appointment.

Course Description

This course is a continuation of CSCI 161. It provides an introduction to the study of fundamental data structures and their associated algorithms. Students learn how to choose appropriate data structures and algorithms for particular problems. They learn about lists, stacks, queues, trees, sorting, searching, abstract data types, and object-oriented programming using an object-oriented programming language. A weekly laboratory is required.

Prerequisites: CSCI 161 or permission of instructor.

Textbook

Koffman and Wolfgang. Data Structures: Abstraction and Design Using Java, Second Edition. Wiley, 2010. ISBN 978-0-470-12870-1. (required text)
Assigned readings from this text are listed on the schedule. Readings should be completed before the listed class.

Resources

Course Goals

After completing this course, a student will be able to:

Course Components

Programming Homeworks

Similar to CS 161, you will have a number of programming assignments to complete as homeworks. Each of these is intended to be a stand-alone application that incorporates concepts from the class, allowing you to demonstrate your understanding. You will have one homework due approximately every 2 weeks (see schedule). Note that these homeworks will easily take the full two weeks to complete---get started early and be sure to ask for help if you get stuck!

Homework assignments are to be completed individually, and will be submitted online. Homeworks are worth 40% of the course grade in total.

Programming Labs

You will also have weekly labs: smaller programming assignments designed primarily to give you a chance to practice and experiment with concepts we cover in lecture. You should be able to complete labs in the 2 hours allotted; however, you are welcome to finish them over the course of the day: labs are due at the start of class on the following day (Wednesday).

Unless otherwise noted, labs will be completed in pairs; you may wish to refresh yourself on the pair programming guidelines from CS 161. Note that you must work with a different partner each lab. Labs are worth 20% of the course grade in total.

Weekly Quizzes

Every week there will be a short, online quiz on the material covered over the past week. Quizzes will be open from 5pm Wednesday to the start of class on Friday. These quizzes are self-graded; you get credit for completing them, whatever your answers. A foolish student would simply answer "Go loggers!" for every question, giving them no thought. The wise student will recognize that these are good previews of exam questions and an excellent tool for preparing and reviewing how well you understand the material when offered in an exam format. These quizzes should be taken "closed-book, closed-note"--they are a chance for you to test your own mastery! Quizzes are worth 10% of the course grade in total.

Midterms

There will be two midterms given in class, as indicated on the schedule. These midterms will feature similar questions to the quizzes. Midterms are individual, closed book and closed note. Each midterm is worth 10% of the course grade.

Final Exam

This course will have a final, comprehensive exam. The final exam is worth 10% of the course grade. A high score may help raise a lower score on a midterm.

A note about grades: final grades are determine neither on a formal curve (with equal numbers of As and Fs, Bs and Ds, and so on) nor necessarily on a fixed, straight scale. The following scale provides upper bounds--that is, your grade will not be lower than indicated, but may very well be higher: A >= 95, A- >= 90, B+ >= 87, B >= 83, B- >= 80, C+ >= 77, C >= 73, C- >= 70, D+ >= 67, D >= 63, D- >= 60, F

Course Policies

Respect

This class may involve in-class discussion of topics on which you and your classmates may have differences in opinion. Please be respectful of others (students or otherwise) at all times.

Collaboration

We expect you to do your own independent work in this course. While computer programming is normally a collaborative endeavor, in the end you each must individually learn the course material. In this course it is always permissible, even desirable, to talk with your classmates about the conceptual course material or the requirements of an assignment. It is always permissible to get help from anyone about using Eclipse or other system details, help with minor syntax errors, or suggestions of possible test cases for your programs.

However, the final product (the code you write and submit) must be your own. When you ask for help from other students, you should follow the Gilligan's Island Rule formulated by Larry Ruzzo at University of Washington:

Leave without any written record of the collaboration (erase all whiteboards, delete all e-mail, recycle all paper, smash all stone tablets, etc.), and then spend at least half an hour engaging in mind-numbing activity such as watching Gilligan's Island before resuming work.

This process assures that you are able to reconstruct what you learned from the collaboration afterwards all by yourself. The most important part of the assignment is the process of the getting the solution--including the false starts, bugs, misconceptions, and mistakes--because the learning occurs in the doing. Completely apart from the ethical issues, copying a solution deprives you of the whole point of the assignment.

It is never permissible to copy and paste another student's solution (whether code or prose). If you use code written by someone else (such as the textbook or instructor), you must include a comment giving credit to the author and explaining where the code came from. Failing to give appropriate credit is a form of plagarism, and so is considered cheating.

That said, most lab assignments in this course will be completed using pair programming, which follows a different set of collaboration guidelines; see the pair programming guidelines for details.

We encourage all students to help their classmates with the course material, homeworks, and labs, within these limits. In order to facilitate this collaboration, we have also opened up a class discussion forum on Moodle ("Programming Help!") where you can ask other students for advice if you get stuck on an assignment. This forum is intended to help solve bugs or offer clarifications, not to share solutions.

Correspondence

I will send out course announcements by email, so you should check your email daily. Note that this email will go to your pugetsound.edu address. If you prefer to read your email on another account, you should set your Pugetsound account to forward your email to your preferred account (see http://www.pugetsound.edu/files/resources/6291_ForwardWebmail.pdf).

When emailing me, please try to use proper grammar and make sure to sign your emails! This will let me know who is writing, and will help me to better answer any questions.

My office hours are listed above. I am more than happy to talk about any questions or concerns you may have about the course or its material. I highly recommend you take advantage of professor's office hours; it's one of the greatest benefits of attending a school like UPS.

Attendance

Make every effort to attend each class meeting; we will often cover material that isn't directly in the textbook and so can't be found anywhere else. Classes (both lectures and labs) will begin and (usually) end on time. Please do your best to get to class before the start of the hour. Students are expected to attend all lectures, with exceptions permitted in case of illness and family emergencies. I reserve the right to drop from the course any student that misses 5 or more classes.

Technology in Class

Please silence all cell phones/pagers/etc. before the beginning of each class. Laptops are allowed in class, but only for class purposes: do not use class time (lecture or lab) to check your email, update your Facebook, read reddit, make LOLCats, etc. Such usage is distracting and interferes with learning both for you and for all the other students in the class. If the temptation is too much, simply don't bring your laptop--you will not need it for any lecture. If another student's computer is distracting, please ask them to close it (or let me know outside of class).

Late Work

Turn in whatever portion of an assignment you have completed on the due date. It's much better to turn in something rather than nothing; zeroes are hard to make up. Likewise, don't skip any quizzes if you can help it; too many zeroes will significantly lower your overall score. Late assignments will only be accepted with specific assent of the instructor, and then only within 72 hours of the original due date. Late assignments will lose one full letter grade per day late. If you find yourself falling behind, please check in with me ASAP; I am glad to help!

Academic Honesty

Please review the Academic Honesty Policy in the Student Handbook, and ask the instructor if you have any questions regarding its application to this course. The consequences of academic dishonesty are not worth the risks. The simple rule is: do not claim anyone else's work, code, words, or ideas as your own. If you're in doubt, come talk to me in advance.

If you're having problems in the course, come and speak with me; never take the shortcut of copying someone else's work.

Special Accommodations

Academic accommodations are available for students with disabilities who are registered with the Office of Disability Services. If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Peggy Perno, Director of Disability Services, 105 Howarth, 253.879.3395. She will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.

I also encourage all students having difficulty, whether or not due to a disability, to consult privately with me at any time.

Emergency Procedures

Please review university emergency preparedness and response procedures posted at www.pugetsound.edu/emergency/. There is a link on the university home page. Familiarize yourself with hall exit doors and the designated gathering area for your class and laboratory buildings.

If building evacuation becomes necessary (e.g. earthquake), meet your instructor at the designated gathering area so she/he can account for your presence. Then wait for further instructions. Do not return to the building or classroom until advised by a university emergency response representative.

If confronted by an act of violence, be prepared to make quick decisions to protect your safety. Flee the area by running away from the source of danger if you can safely do so. If this is not possible, shelter in place by securing classroom or lab doors and windows, closing blinds, and turning off room lights. Stay low, away from doors and windows, and as close to the interior hallway walls as possible. Wait for further instructions.

Course Schedule

Below is a planned schedule of topics to help students plan their work in this course. It is only approximate. Changes will be announced in class, and I will do my best to keep this schedule updated. Any changes to due dates or exam dates will be announced.

Week Date Topic Reading Lab Quiz Homework
1 01/23 Java and Eclipse A.1 - A.9, 1.1 - 1.5 Lab A
2 01/28 Java ADTs C.1 - C.5, 1.6 - 1.8, A.11, A.12, 2.1, 2.2 Lab B Quiz Week 2 Homework 1 due Wed
3 02/04 Lists and Big-O 2.3, 2.4 Lab C Quiz Week 3
4 02/11 Linked Lists 2.5 - 2.10 Lab D Quiz Week 4 Homework 2 due Wed
5 02/18 Testing; Stacks and Queues 2.11, 3, 4 Lab E Quiz Week 5
6 02/25
Exam 1 Wednesday
study for exam Homework 3 due Fri
7 03/04 Recursion I 5 Lab F Quiz Week 7
8 03/11 Recursion II 5 Lab G Quiz Week 8 Homework 4 due Fri
Spring Break
9 03/25 Grammars and Trees I 6.1 - 6.4 Lab H Quiz Week 9
10 04/01 Trees II 6.5, 6.6, 9.1, 9.2 Lab I Quiz Week 10
11 04/08
Exam 2 Wednesday
study for exam Homework 5 due Tues
12 04/15 Maps & Hashing 7 Lab J Quiz Week 12
13 04/22 Graphs 10.1 - 10.4 Lab K Quiz Week 13 Homework 6 due Wed
14 04/29 Sorting I 8 work day Quiz Week 14
15 04/29 Sorting II; Review Lab L
Finals Final Exam: Monday 05/13, 8:00am Homework 7 due Mon