CS 161a: Introduction to Computer Science - Fall 2013
Course Syllabus
Instructor
Joel Ross
(bio)
email:
jross@pugetsound.edu
office:
Thompson 405
phone:
x3558
Class Meetings
Lecture:
Mon/Wed/Fri 9:00am to 9:50am (Thompson 399)
Lab:
Thu 9:00pm to 10:50am (Thompson 409)
Website:
http://cs.pugetsound.edu/~jross/courses/cs161/
Moodle:
https://moodle.pugetsound.edu/moodle/course/view.php?id=6503
Submissions:
for Windows,
map
\\hedwig\jross_cs161
;
for Mac,
connect to smb://hedwig/jross_cs161
(instructions)
This course builds progressively (and aggressively!) on previously covered material. Therefore, it is essential to attend all classes and keep up with the reading and the assignments.
Office Hours
Mon, Tue, Wed, Fri: 10:00am to 11:00am; Thu 11:00am to 12:00pm; whenever my office door is open, or by appointment. I am available pretty much whenever I am not in class.
Take advantage of office hours! They are a great time to get help, ask questions (whether or not related to class), and otherwise build up relationships with your professors.
Course Description
This course is an introduction to computer science and programming. It uses the programming language Java to illustrate concepts in computer science, and the BlueJ interactive Java environment to reduce the complexity of program development. The course emphasizes the use of the computer as a problem solving tool and the development of good programming style. CS 161 is the introductory course for students planning to major or minor in computer science or students interested in learning more about the technologies that shape their daily lives.
No previous programming experience is expected or required--we will start at the very beginning. As a result, some of the initial material may be review for students with previous programming experience. See me if you're in this category, and we can find ways to extend or modify assignments to keep you challenged.
Textbook
Horstmann. Java Concepts: Early Objects, 7th Edition. Wiley. 2013. (required text). May be available on Amazon for cheaper, or as a digital textbook rental (see me for details).
You might also consider: Horstmann. Big Java: Early Objects, 5th Edition. Wiley. 2013. (Amazon). This is an identical text with additional (useful!) material in the back. For a little bit more, you can get a more complete and longer-lasting reference.
Assigned readings from this text are listed on the calendar. Readings should be completed before the listed class.
Resources
-
Assignments will be submitted to a submission folder on the
hedwig
network drive. See the instructions for accessing the drive. For Windows, map\\hedwig\jross_cs161
and for Mac, connect tosmb://hedwig/jross_cs161
- You can download the BlueJ IDE for free. The IDE also has documentation
- You may also need to install the Java JDK (make sure to get the JDK, not just the JRE).
- The Java Documentation (Java API) can be found here
- Textbook resources available here
- Even more programming pratice problems can be found at http://codingbat.com/java
Course Goals
After completing this course, a student will be able to:
- Create stand-alone computer programs to solve simple, real-world problems.
- Develop and implement algorithmic solutions for solving problems.
- Use an object-oriented approach to virtually model and address problem domains.
- Locate and resolve "bugs" in computer programs and procedures.
- Manipulate basic data structures and collections.
- Apply computer science concepts such as abstraction, algorithmic precision, and recursion to everyday problem solving.
- Be aware of social concerns surrounding the use of computers and technology.
Course Components
This course aims to help you develop computer science-based thinking skills, applied primarily through learning to program computers. As with any skill, the best way to get better at programming is to practice---and this class will give you lots of opportunities to practice.
Labs
Labs are programming assignments you will complete during the scheduled lab time. Each lab is intended to help you practice and master concepts from the course.
All labs will be completed in pairs; make sure to read the pair programming guidelines for more details on pair programming (we will also discuss this during class).
Lab assignments will 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. Labs are worth 20% of the course grade in total.
Homeworks
Homeworks are larger, more focused projects that you will complete on your own. These are larger projects than labs, and so will require more planning and effort. Homeworks are intended to let you master class concepts and demonstrate your newly acquired programming skills.
You'll have around a week to complete each homework. Note that each assignment will take up the whole week--you will not be able to complete it at the last minute. You should be working on the assignment continuously!
Remember: programming always takes more time than we think it will. So be sure to get started on homeworks as early as possible!
Homework assignments are to be completed individually unless otherwise specified. Homeworks are worth 30% of the course grade in total.
Weekend Quizzes
Every weekend there will be a short, online quiz on the material covered the previous week. Quizzes will be available from 5pm Friday to the start of class on Monday. 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 as an exam format. These quizzes should be taken "closed-book, closed-note"--they are a chance for you to test your own mastery! Completing the quizzes will be factored into your participation score (see below).
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 exam. The exam is comprehensive (not least in that later concepts build directly on earlier ones). The final exam is worth 10% of the course grade. A high score may help raise a lower score on a midterm.
Final Project
You will be completing a small programming project of your choosing as part of the final to this course. You can work on this project individually or in pairs (I recommend in pairs). We'll discuss this in more detail closer to the end of class. The final project will be worth 10% of the course grade.
UPDATE! Final project details are now available!
Participation
Throughout the class, we will be doing more than just programming. We will read and talk about short articles, do in-class activities and exercises, and so forth. This component measures your participation in these activities. The best way to earn participation points is to show up to class, speak up and share your views in class, do the weekend quizzes, and stop by office hours at least once! Participation is worth 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.
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 BlueJ 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, 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.
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. Again, 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 promptly on time in order to try and end on time---please do your best to get to class before the start of the hour. Students are expected to attend all lectures (attendance counts towards your participation score), 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
In general, the use of cell phones and laptops will not be permitted in class unless specific permission is given. Please silence all cell phones/pages/etc. before the beginning of each class.
Certain lecture days will involve in-class computer work in which you can and should use your laptop; these days will be announced in advance.
In order to help with note-taking, I will make all code from lectures available online, along with screen-cast recordings of the lecture.
Late Work
At the beginning of the semester, each student has two "free late days" that can be used to extend homework assignment due dates. Late days are spent in 24 hour increments---if the assignment is due at 9:00am and you hand it in at 10:00am, you will have used one "late day". Days may all be used on a single assignment or split across multiple assignments. After late days have been used up, late assignments will lose one full letter grade per day late. Note that late days cannot be spent on the final project.
If you ever find yourself falling behind, please check in with me ASAP (that means before the due date!); I am glad to help or try and work something out!
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 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 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 reading and homework assignments. Future assignments will be added regularly, so be sure to check back often!
- Readings should be completed before the class session for which they are listed. All readings are from the Horstmann text unless specified otherwise.
- Labs are listed the week they are conducted, and are due at the start of class on Friday of that week. Labs should be available the night before.
- Homeworks due dates are listed on the calendar.
- Quizzes will available online on Friday of each week, and are due on the following Monday before the start of class. Quizzes can be accessed through Moodle or from this page.
Week | Date | Topic | Reading | Lab | Homework | Weekend Quiz |
1 | Sep 02 | Intro to Computer Science | Ch 1 | Lab A | Quiz Week 1 | |
2 | Sep 09 | Objects & Methods | Ch 2.1-2.8 | Lab B | Homework 1 due Wed | Quiz Week 2 |
3 | Sep 16 | Making Classes | Ch 3; 4.5 | Lab C | Homework 2 due Wed | Quiz Week 3 |
4 | Sep 23 | User Interaction & Testing | Ch 4.1-4.4; 3.4-3.5; 2.9-2.10 | Lab D | Homework 3 due Wed | Quiz Week 4 |
5 | Sep 30 | Data Types | Ch 4 (review) | Midterm I | Homework 4 due Thurs | |
6 | Oct 07 | Conditionals | Ch 5 | Lab E | Quiz Week 6 | |
7 | Oct 14 | Loops | Ch 6 | Lab F | Homework 5 due Fri | |
8 |
Oct 21
Mon-Tues: break |
Arrays | Ch 7.1-7.5 | Lab G | Quiz Week 8 | |
9 | Oct 28 | Collections | Ch 7.6-7.8; 8.1-8.3 | Lab H | Homework 6 due Fri | Quiz Week 9 |
10 | Nov 04 | Searching & Sorting | Ch 14 (link) | Lab I | Quiz Week 10 | |
11 | Nov 11 | Midterm II | Midterm II | Homework 7 due Fri | ||
12 | Nov 18 | GUI Programming | Ch 10 | Lab J | Quiz Week 12 | |
13 |
Nov 25
Wed-Fri: holiday |
Design |
Homework 8
due Mon
Project Proposal due Mon |
|||
14 | Dec 02 | Recursion | Ch 13 (link) |
Project
Alpha Demos |
Quiz Week 14 | |
15 | Dec 09 | Next Steps | ||||
Finals | Final Exam: Monday Dec 16, 8:00am | Final Projects due Wednesday Dec 18, 11:59pm |