CSCI 161c: Introduction to Computer Science - Fall 2012

Course Syllabus

Instructor

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

Class Meetings

Lecture: Mon/Wed/Fri 11:00am to 11:50am (Thompson 399)
Lab: Tues 11:00am to 12:50 am (Thompson 409, with Abu Shahriar)

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

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 through Fri 1:00pm to 2:00pm, whenever my office door is open, or by appointment

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. CSCI 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 and Resources

Course Goals

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

Course Components

Programming Assignments

As with any skill, the best way to get better at programming is to practice. This class will give you lots of opportunities to practice, primarily through Labs and Homework.

Labs are programming assignments you will complete during the scheduled lab time. Each lab is intended to help you practice and master the concepts being discussed during lecture. All labs will be completed in pairs; make sure to read the pair programming guidelines for more details on pair programming. We expect you will be able to finish the kab during the allotted time, but if not you are welcome to finish them during the evening. Labs are due the following Wednesday at the start of class. Labs are worth 15% of the course grade in total.

Homeworks are programming assignments that you will complete on your own. These homeworks are intended to let you master class concepts and demonstrate your newly acquired programming skills. These are larger projects than labs, and so will require more planning and effort. Homeworks will either be completed individually or in paired, as specified by the assignment. Paired homeworks should be completed with your lab partner for that week.

I will post each week's homework on Monday of each week, so that you have a full week to work. Homework is due at Midnight on Monday of the following week (so week 2's homework is due the Monday of week 3). Homeworks are worth 35% of the course grade in total.

Remember: programming tasks always us take longer to complete than we think they will, no matter how much experience we have. So be sure to get started on programming assignments as early as possible!

Weekly Quizzes

Every Friday morning during the beginning of lecture there will be a short in-class quiz on the material previously covered. Quizzes are taken individually, and are closed book and closed note. These quizzes are primarily diagnostic--they let both you and I measure how well you understand the material. They also will form an excellent set of material you can use to review for the midterms and final. Because there's a quiz every week, there is no way to make up missed quizzes; however, quizzes missed for good reasons won't count negatively in anyone's grade. Quizzes are worth 10% of the course grade in total, and I'll be dropping the lowest score on your quizzes.

Midterms

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

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.

Final Exam

Watch this space for details about the Final 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 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.

Pair Programming and Collaboration

Some assignments in this course will be completed using pair programming; see the pair programming guidelines. Apart from these specific assignments, we expect you to do your own independent work in this course. 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 (though when an assignment requires it, you must write your own description of your test plan). It is never permissible to copy another student's solution (whether code or prose). A good rule of thumb is this: Any time you find yourself writing down--on paper or by electronic means--part of someone else's solution, you are copying impermissibly. If you use code from the textbook or the instructor, you should include a comment indicating where the code came from.

We encourage all students to help their classmates with the course material and the 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 bugs or clarifications, not to share solutions.

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.

Correspondence

I may 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!

Attendance

Make every effort to attend each class meeting; we will often cover material that isn't directly in the textbook. Class (both lectures and lab) will begin 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, 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

The use of cell phones and laptops will not be permitted in class unless specific permission is given. Please silence all cell phones/pagers/etc. before the beginning of each lecture.

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 48 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!

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, come 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 Homework
1 Aug 27 Intro & BlueJ, Objects & Classes, Methods & Data, Code Chapter 1 Lab A Homework 1
2 Sep 3
Mon: holiday
Variables; Methods; Conditionals Chapter 2 Lab B Homework 2
3 Sep 10 Code Recipes; Debugging; Object Interaction Chapter 3 Lab C Homework 3
4 Sep 17
Monday work day
Collections and Loops Chapter 4 Lab D Homework 4
5 Sep 24 Collections and Loops Continued Chapter 4 Lab E
6 Oct 1 Collections and Loops Continued
Exam 1 Monday
Chapter 4 Lab F
7 Oct 8 Collections and Loops Continued Chapter 5 Lab G Homework 5
due Wed Oct 10
8 Oct 15
Mon-Tues: break
Searching and Sorting
9 Oct 22 Searching and Sorting Lab H Homework 6
due Fri Oct 26
10 Oct 29 Testing & Design; Programming without BlueJ Chapter 6,
7.5-7.8, 12.4-12.6
Lab I Homework 7
due Fri Nov 02
11 Nov 5 Polymorphism and Inheritance
Exam 2 Monday
Chapter 8 Lab J
12 Nov 12 Polymorphism continued; Interfaces Chapter 9, 10.6-10.7 Lab K Homework 8
due Fri Nov 16
13 Nov 19
Wed-Fri: holiday
GUI Programming Chapter 11 Final Project
planning meetings
14 Nov 26 GUI Programming continued Final Project
mid-point check-in
15 Dec 3 Next Steps Final Project
final check-in
Finals Dec 10 Final Exam (Sec C): Wednesday, 12:00pm Final Projects due Monday midnight