CSCI 261: Computer Science II — Fall 2014
Course Syllabus
Instructor
Joel Ross
email:
jross@pugetsound.edu
office:
Thompson 405
phone:
x3558
Class Meetings
Lecture:
Mon/Wed/Fri 3:00pm to 3:50pm (Thompson 387)
Lab:
Tues 12:00pm to 1:50am (Thompson 409)
Website:
http://cs.pugetsound.edu/~jross/courses/cs261/
Moodle:
https://moodle.pugetsound.edu/moodle/course/view.php?id=7677
Piazza:
https://piazza.com/class/hz0256jucu71t4
We will be using Piazza for class discussion and Q&A. The system is catered to getting you help fast and efficiently from classmates and from myself. Rather than emailing questions to me, I encourage you to post your questions here.
Assignment Submissions:
for Windows,
map
\\vhedwig\jross_cs261
(instructions).
For Mac,
connect
to smb://vhedwig.pugetsound.edu/jross_cs261
(instructions)
Office Hours
Feel free to stop by any time. I will definitely be in my office during "official" hours: Mon/Wed/Thu/Fri 1:00pm to 2:00pm, Tue 2:00pm to 3:00pm. We can also schedule to chat at a specific time.
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 with a grade of C- or better, or permission of instructor.
Course Goals
After completing this course, a student will be able to:
- Develop more advanced software systems using object-oriented concepts, including polymorphism and abstract data types (ADTs).
- Utilize a professional integrated development environments (IDEs), including debuggers
- Model problems with classical data structures such as stacks, queues, trees, and maps.
- Evaluate the appropriateness of a data structure for modeling a given problem.
- Describe the concept of recursion and implement recursive algorithms.
- Implement and utilize common sorting algorithms.
- Analyze the time and space complexity of algorithms and data structures at a basic level.
Textbook
Koffman and Wolfgang.
Data Structures: Abstraction and Design Using Java, 2e.
Wiley, 2010. (strongly recommended text)
May be available
on Amazon
for cheaper than the bookstore, or as a
digital textbook rental.
Relevant readings from this text are listed on the calendar.
Resources
- We will be using Eclipse as a development environment; you can download a copy for free.
- You may also need to install the Java JDK (make sure to get JDK 7 or 8, not just the JRE).
- The Java Documentation (Java API) can be found here
- Textbook resources and source code available here
- Even more programming pratice problems (including recursion problems!) can be found at http://codingbat.com/java
Course Components
Programming Homeworks
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 of those concepts. You will have one homework due approximately every 1.5 to 2 weeks (see the calendar). Note that these will not be insignificant assignments; I expect the homeworks to easily take the full time allotted (and remember, programming always takes you longer than you think it will!) So 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.
Labs
You will also have weekly labs: these assignments will give you a chance to practice concepts from class, or perform a (guided) exploration of new material. Unless otherwise noted, labs will be completed in pairs; you should review the pair programming guidelines. You will work with a different partner each lab; partners will be assigned randomly by the professor.
Lab assignments will usualy be posted online the night before the lab session. You should read through the assignment before lab so you have a sense for what you'll be doing, and to look at any new concepts that will be covered. I expect you will be able to finish the lab during the allotted time, but if not you are welcome to finish them during the evening. Labs are due at the start of class the day after the lab session (Wednesday). Labs are worth 20% of the course grade in total.
Midterms
There will be two midterms given in class, as indicated on the schedule. Midterms will cover both theortical concepts and programming skills. Midterms are individual, closed book.
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 on the final may help raise a lower score on a midterm.
Participation
You are expected to be an active participant in this class, and this course component reflects that. The best way to earn participation points is to be both physically and mentally present! Show up to class, complete the "challenge problems", ask and answer revelant questions, share an opinion, and otherwise contribute to a conducive learning environment. Participation is worth about 10% of the course grade.
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.
Correspondence
I will send out course announcements and information 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.
I have set up a public discussion forum through Piazza. This is a great place to ask (and answer!) technical or homework questions. You may get responses from other students faster than from me, and any answers can be shared with the entire class.
For more private correspondence, you are welcome to email me. When emailing, please 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.
Collaboration
I 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.
The best way to follow the Gilligan's Island Rule is to not look at anyone else's code, nor let anyone else look at your code. Instead, discuss the concepts away from the written code, so that any sharing is always one step removed from what you turn in.
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, 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.
Attendance
Make every effort to attend each class meeting; we may 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. Late assignments will lose 10% per day late. Note that it is your responsibility to let me know if you turn in an assignment late (otherwise I may not notice!)
Submitted homework assignments that receive low scores may be "revised" to make up points. You can earn up to 75% of the points you missed. It is your responsibility to alert me of any revisions. You must turn in a revision within 1 week of the assignment being returned.
If you find yourself falling behind, please check in with me ASAP; I am glad to help! It is better to seek help before the deadline.
Academic Honesty
Please review the Academic Honesty Policy in the Student Handbook and ask me 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. It isn't worth it.
Special Accommodations
Academic accommodations are available for students with disabilities who are registered with the Office of the Office of Accessibility and Accommodations. If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Peggy Perno, Director of the Office of Accessibility and Accommodations, 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, whatever the reason, to consult privately with me at any time.
Emergency Procedures
Please review university emergency preparedness and response procedures posted at http: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. Lie on the floor out of sight and away from windows and doors. Place cell phones or pagers on vibrate so that you can receive messages quietly. Wait for further instructions.
Course Calendar
Below is the planned schedule for the course. This includes a list of topics to help students plan their work in this course, as well as assignments and relevant book chapters. 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.
- Readings are from the Koffman and Wolfgang text unless specified otherwise. Note that we will be jumping around in the text quite a lot; I will try and announce page numbers in class.
- Labs are listed the week they are conducted, and are due at the start of class on the following day.
- Homeworks are due on the day listed (generally at midnight, though check each assignment for specifics).
Week | Date | Topic | Reading | Lab | Homework |
1 | 09/01 | Classes & Interfaces |
Wed: App. A; Ch 1.1
Fri: 1.2 |
Lab A | |
2 | 09/08 | Inheritance; GUIs |
Mon: App. C;
Wed/Fri: 1.3-1.8 |
Lab B | Hwk 1 - Movies due Thu |
3 | 09/15 | Exceptions and Bugs; Big-O |
Mon: 2.11; App. D.2
Wed: 1.6 Fri: 2.4 |
Lab C | |
4 | 09/22 | Sorting; Generics |
Mon: 8.1-8.5
Wed: 8.6; 2.1 Fri: 2.9 |
Lab D | Hwk 2 - Ants vs. Bees due Wed |
5 | 09/29 | Collections |
Mon: 2.7; 7.1
Wed: 7.2 Fri: 2.2-2.3 |
Lab E | |
6 | 10/06 | Linked Lists |
Mon: 2.5
Wed: 2.6, 2.8 |
Lab F | Hwk 3 - Baby Names due Mon |
7 | 10/13 |
Exam 1 Monday
Stacks & Queues |
Tue: 3.1-3.2
Wed: 3.3-3.4; 4.1-4.3 Fri: 4.4-4.5 |
(go over exam) | Hwk 4 - Shape Decomposer due Fri |
8 |
10/20
Mon-Tues: break |
Recursion |
Wed: 5.1
Fri: 5.3 |
||
9 | 10/27 | Backtracking |
Mon: 5.5-5.6
Fri: 5.2 |
Lab G | |
10 | 11/03 | Trees |
Mon: 5.4
Tue: 8.7 Wed: 6.1 Fri: 6.2-6.3 |
Lab H | Hwk 5 - Sudoku due Mon |
11 | 11/10 | Special Trees |
Mon: 6.4
Wed: 6.5 Fri: 8.8 |
Lab I | |
12 | 11/17 |
Exam 2 Monday
Graphs |
Tues: 10.1
Wed: 10.2-10.4 Fri: 10.5-10.6 |
(go over exam) | Hwk 6 - Huffman Codecs due Tues |
13 |
11/24
Wed-Fri: holiday |
Graphs (continued) | Mon: 10.6 | Lab J | |
14 | 12/01 | Hash Tables |
Mon/Wed: 7.3-7.4
Fri: TBD |
Lab K | |
15 | 12/08 | Sorting Revisited; Review | Mon: 8.8-8.9 | Lab L | Hwk 7 - Hero Roster due Wed |
Finals | Final Exam: Monday 12/15, 4:00pm |