UW Home     CSE Home   Announcements    Message Board    Contact Info 

 
 

CSE 142: Computer Programming I Syllabus -- Spring 2004

Course Website: http://www.cs.washington.edu/142/

Course Instructors

Name
Office
E-Mail Address
Office Hours
CSE 640 cse142-instructors@cs.washington.edu OR
dickey@cs.washington.edu
see his schedule
CSE 214 cse142-instructors@cs.washington.edu OR
zander@cs.washington.edu
MWF after class in hallway outside Kane 210, Th 2:30pm in CSE 214, or by appt
Teaching Assistants
see web
full information on the TAs link; you are welcome to visit any instructor or TA during scheduled office hours, not just your own TA.
full info. on the web

Class Meetings

Lecture A (Dickey)--- Monday, Wednesday, and Friday from 9:30 to 10:20 in Guggenheim 224
Lecture B (Zander) --- Monday, Wednesday, and Friday from 11:30 to 12:20 in Kane 210
Quiz Section --- Thursdays. Check UW online time schedule for times and locations.

Course Goals and Objectives
The major goals of this course include:
  • To learn the general principles of computer programming
  • To develop skills in designing, implementing, documenting, testing, debugging, and analyzing in the context of computer science   --   these skill are not necessarily technical in the narrow sense of the word, but encompass a range of abilities often described as "critical thinking"
  • To develop technical communication skills
  • To develop an appreciation for the art of computer science
These goals will be accomplished by:
  • Completing homework assignments, projects, quizzes, and exams
  • Participating in class discussion through regular attendance in lecture, quiz section, and other activities contributing to the overall welfare of the class
  • Seeking help of course staff and classmates when necessary
  • Communicating ideas in a written document accompanying programming projects
  • Communicating ideas orally and in writing with instructional staff and classmates during class activities
  • Providing help rather than giving answers to classmates seeking help
Course Philosophy

This course is designed to introduce concepts related to computer programming and computer science. Many concepts are challenging and take time and practice to master. It is essential to keep up with the material. It's okay to struggle with the concepts, but it is your responsibility to seek help when you are confused.

This is a programming course. Students almost universally report that CSE142 is time-consuming compared to 100-level courses in other disciplines. Much of the time is consumed by the unpredictable but exhilarating activity of programming. You can't succeed without a commitment to spend whatever time it takes to understand and complete the assignments. Students average 10-15 hours a week outside of class time. And remember, this is an average, so some of you will spend less time, some more time.

This is not a programming course. After an exam, students sometimes remark, "I don't feel this exam fairly assesses my skill as a programmer." And they are right! Programming assignments and exams measure different skills and knowledge. CSE142 is about much more than just getting a program to run; it's about fundamental concepts of computer science. You must master these fundamentals and the accompanying technical vocabulary, analytical, and design skills, as well as write beautiful and accomplished programs.

Help and Communication:
We expect you to have questions as you are learning the material. The course instructional staff is here to help you keep up with the material. You are welcome to attend office hours of either instructor or any Teaching Assistant (TA). The full office hour schedule is on the web. You may receive certain types of help from classmates (see below about Collaborative Learning).

We encourage you to ask questions during lecture meetings and post questions to the class discussion board. We will communicate ideas with each other by posting messages to an E-Post bulletin board, which is linked from the course website. Please use the bulletin board for all technical questions and discussions, but please do not post more than a snippet of code. Course staff members will monitor the discussion board and will normally respond to questions within a day (if they haven't already been answered by other members of the class). We will send email to your UWNetID if we need to broadcast a message to everyone in the class. Email messages are also archived and can be viewed on the web.

Collaborative Learning:
CSE142 is a large class with around 400 students enrolled in the two lectures. One advantage of having a large number of students is having 400 different ways of understanding the course material and having 400 classmates to help you learn. We encourage you to discuss freely the requirements and interpretation of homework and projects, but you should discuss code only with your designated partner.  Any work that you turn in must be your own. Unacknowledged copying or using parts of someone else's work, even if it has been modified by you, is plagiarism and is not acceptable. When you work with others on homework and projects,  please acknowledge places where you received help in your homework submissions.

An acceptable way to collaborate is to discuss problems and potential solutions and then write/code the solutions on your own. When giving help to other classmates, please do not give them the answer. Instead, ask questions to learn of their understanding and give conceptual explanations - this practice will help you master the material yourself.

You will be engaged in collaborative learning activities during quiz section each week as a member of a 4 to 5-person quiz section group. These groups are designed to give you practice with new concepts and help you learn how to communicate your ideas. Exceptions to these rules, such as assigning partners to work together on large programming projects, will be explicitly announced in the appropriate assignment or project.

Summary:
In this course, the instructor's job is to guide you in learning about computer programming and computer science. In additional to traditional lecturing, we will have regular discussions and activities during lectures and quiz sections. We expect your full participation and readiness to learn at all class meetings. In return, we will do our best to offer suggestions, activities, and explanations to help you learn the material.

Assessment of Learning

We will assess your learning based on your submitted work, including homework assignments, programming projects, project reports, quizzes, exams, and in-class activities. Generally the assignments, projects, reports, quizzes, and activities are your chance to learn, while the exams are the main way we will assess what you have learned. Because CSE142 has such a large enrollment, all homework, projects, and project reports have fixed deadlines. No late work will be accepted.

Grading Scheme (subject to change):
Course grades will be calculated as follows, although the exact weights may change somewhat if appropriate. Individual assignments, programming projects, and reports will be weighted differently depending on level of difficulty and other factors.

35% - Homework, projects, and written material (such as reports)
15% - Midterm #1
15% - Midterm #2
21% - Final Exam
10% - Quizzes, all weighted equally
  4% - Service and Participation

The mean of course grades is typically around 2.9. To get a general standing in the course, compare your scores with the class mean. There is no extra credit in this course.

Homework Assignments and Programming Projects: There will be frequent homework assignments consisting of written questions and short programming problems, some of which will require use of a computer. These assignments are intended to help you learn the material. Most homework assignments should be done individually by each student. Programming projects will generally be done with a partner. Your partner will be determined by the course staff and you will have a different partner for each project. These projects will span up to two weeks and may involve preparing reports, diagrams, and other written materials as well as programs.

Each assignment will carry specific instructions about when and how it is to be turned in. Some assignments and reports may be collected in class or by email. Programming homework is generally turned in electronically via the Web. There will be a special page with a form to fill out, and a "receipt" page is sent back to your computer to verify that we received the assignment. Work that is not turned in according to instructions will not be graded.

Pick up graded written homework and exams from your TA in quiz section. If you find any error in the grading, you must bring it to your TA's attention within one week of when the item was returned.

Exams: Exams are intended to serve as learning tools in addition to helping the course staff evaluate your mastery of concepts. Tests and quizzes may include a mixture of multiple-choice, short-answer, and programming questions. All tests are cumulative, but emphasize the more recently covered material. There will be two midterm exams and one final exam. The midterms will be given in-class during the regular lecture hours. Midterms and exams are scheduled on the dates given on the course calendar - any changes will be announced well in advance. It is your responsibility to be present in class those days. Please do not make plans which would prevent you from taking the exams.

The final exam will be held on the day set by the University, Wednesday, June 9. It is highly likely the time of the final exam (but not the day) will be different from the time currently listed in the UW final exam schedule. An announcement will be made as soon as arrangements are finalized. You must take the exams on the days when they are offered; please do not make plans which would prevent you from doing so.

Quizzes: Because it is essential to keep up with the material, quiz sections and/or Friday lecture may include one or more quizzes. If you keep up with the reading and attend lecture regularly, you should have no problem with the quizzes. All quizzes will be graded on a simple system, and all quizzes will count equally, regardless of length or difficulty. No makeup quizzes will be given, but we will drop the lowest score (percentage-wise) which could be a missed quiz.

Participation and Service: A small percentage of the course grade comes from service and participation, defined as something which helps you learn and helps the staff or potentially benefits the class as a whole. We may throw out examples and suggestions as we go along. But don't wait to be asked. Create your own opportunities, too. More information about service and participation points.

Logistics

Prerequisites: There are no prerequisites listed in the course catalog. However, we assume that you have met the admission requirements for UW: three years of mathematics (geometry and advanced algebra), two years of science, and four years of English. The course is not recommended for students who are at a remedial level in English or mathematics. We also assume familiarity with computers, files, folders, email, web browsing, and the like. Previous experience in programming is not a prerequisite.

Textbook and Materials: The required textbook for the course is a special UW-only, spring 2004 edition of An Introduction to Programming and Object Oriented Design using Java by Jaime Nino and Frederick A. Hosch (using a previous quarter's edition is not recommended, as page numbering and contents have changed.) Books are available for purchase at the University Bookstore only. We ask that you read certain chapters or sections before attending the accompanying lecture (see the online course calendar for the latest updates to the readings). Lectures will not be a replacement for the text; instead, lectures will complement the presentation in the text.

CSE 142 is not a course built around a particular textbook. Don't be surprised to find details that differ between the lecture presentations and the textbook explanations and examples. The order of the topics covered will also differ and additional material may be added. Linked from the web you will find a short textbook by Ben Dugan. While not a complete textbook, this book presents material in a way that is well suited to CSE142.

Other reading includes:

  • reading every message sent to the announcement mailing list
  • reading every word of every assignment (and this can be a lot to read!)
  • mastering material on the lecture slides, including those that are not presented in class
  • mastering material presented in lecture which does not exist on the slides or any printed form
  • reading anything else that we might designate as required reading (e.g., sample solutions, handouts)

Lecture Slides: Copies of lecture slides will be posted to the course website, generally no later than the afternoon after the lecture. We encourage you to print copies of the slides, look at them in advance, and bring them with you to lecture so you can take notes. The slides are not a substitute for attending lecture - there will be significant material presented in lecture that is not included on the posted slides.

Course Website: Please familiarize yourself with the course website as soon as possible. Updates to the schedule, important announcements, and resources to help you learn will all be posted there. If you should happen to miss class, be sure to talk to a classmate to find out what you missed. The course website is not a substitute for attending class - this is not a distance learning course.

Computer Labs: The Introductory Programming Laboratory (IPL) for CSE 142 and CSE 143 is on the third floor of Mary Gates Hall (MGH 334). Computers in the labs run Windows and Java tools, plus usual web browsers, mail, and other web tools. Course software is also installed in some other public UW computing facilities, including the main lab on the ground floor of MGH and the Odegaard Undergraduate Library. The IPL is our home base, and we provide consulting support there. It is also possible to work at home using the same software found in the IPL. Instructions for installing the necessary software can be found on the course web site - click on "computing at home".

Materials: You are responsible for keeping backup copies of your work, either on your Dante account, floppy disks, or other media. Your files are not retained on the lab machines.  When you use a public machine, be sure to log out or reboot when finished.

Course Administrator: Pim Lustig, Allen 126; 616-3225, cse142-admin@cs.washington.edu (pl@cs.washington.edu). See Mr. Lustig for administrative matters related to the course such as forms for registration, test scheduling conflicts, picking up your final exam after the course ends, etc.

Computer Use Policy: Take the excerpts from the campus policies seriously: "You must use all UW [computing] resources in strict accordance with local, state, and federal laws. These laws cover such areas as illegal access to computer systems, networks, and files; copyright violations; and harassment issues... Software and information resources provided through the university for use by faculty, staff, and students may be used on computing equipment only as specified in the various software licenses. Unauthorized use of software, images, or files is regarded as a serious matter and any such use is without the consent of the University of Washington... If abuse of computer software, images, or files occurs, those responsible for such abuse will be held legally accountable."

Academic Misconduct: All worked submitted must be your own or your team's (for projects completed in pairs). Unacknowledged copying or using parts of someone else's program, even if it has been modified by you, is plagiarism and is not acceptable! If you have a tutor or helper from outside the course, that person cannot write any piece of the solution for you. These rules are no different than the ones governing original work and collaboration in an English or History class.

The University has clear guidelines for academic misconduct and the staff of CSE 142 will be vigorous in enforcing them. We make use of very effective automated tools for detecting similarities between homework solutions. It is only fair that students receive credit for work they do themselves and the assignments and projects are designed to help students learn. Read the section on Collaborative Learning in the Course Philosophy section of this document. If you are not clear whether some form of collaboration is acceptable, please ask a TA or instructor first.

Course Format and Calendar
The class meets four days a week: three lectures on MWF, and quiz sections on Thursday. On your own, you have homework to do, mostly computer programs to design and debug. The latest version of the calendar is on the course website. The course calendar lists the lecture and quiz section topics, assigned readings, exams, and due dates for homework assignments and programming projects. The calendar is always subject to change as the quarter progresses.