CMPS 012a: Introduction to Programming - Winter 2003


[Homepage] | [General Lab Info] | [TA's & Tutors] | [FAQ's] | [Supplements] [Homework] | [Sample Program Solutions] | [Exams]

Instructor Information

Brian Hanks
Office: BE 189A
Hours: Wednesday, 1:15 - 3:15, or by appointment
E-mail: brianh@soe.ucsc.edu

Mar 20: Answer Keys to the final exams are available on the Exams page

Mar 14:


Mar 8: *** REMINDER! You must get at least 50% on the programming assignment portion of this class to pass. Obviously, if you only do two of the graded assignments, you will not satisfy this requirement. If you have only turned in 2 graded assignments, make sure you turn in homework 9. NO EXCEPTIONS ***


Feb 17: Tired of always having to find a place to meet your partner? Volunteer for a pilot study on distributed pair programming.

Lecture Notes and Examples

This section contains copies of the lecture notes, including copies of the Java source code from the lecture notes.

General Lab Information

This section contains general information about things you will need to know how to do in order to do well in this class (and future classes as well). It includes information on using Unix, creating a program, and submitting homework assignments.
If you need additional background information, you should definitely check out the resources CATS (Communications and Technology Services) provides. They are located downstairs in the Communications building.
If you don't yet have a CATS account, click here to register.

TA's and Tutors

This section contains information about the lab times and when the TA's and tutors are available.

Lecture Supplements

This section contains additional information from the instructor to supplement the lectures. Materials will be added here as they become necessary.

FAQ's (Frequently Asked Questions): See if your question is here!

This section contains questions pertaining to programming which students frequently ask.

Required Text:

Java by Dissection. Pohl and McDowell, Addison-Wesley, 2000.

The textbook for this class is available from both the Baytree Bookstore and Slug Books Co-op. In this course we will be using the first six chapters. The first three chapters of the textbook are available online.

This is the first printing of this book, and sad to say, there are a few errors. A list of them can be found here.

Evaluation:

A minimum of 50% on all three aspects of the grade is necessary but not sufficient to pass this class. This means, if you receive less than 50% on any one of the three parts (homework, quizzes, or final), you will not pass.

However, just because you score at least 50% on each part does not imply that you will necessarily pass. For example, someone who scored 51% on each of the three parts would almost certainly NOT pass.

Lab attendence is mandatory. Absence from lab will affect your programming assignment grade.

Pair Programming

In this class, all students will work with a partner on their programming and lab assignments. You will work with the same partner for the entire quarter. You may be asking yourself "Why do I have to work with someone else?" Experience and research into using pair programming in introductory programming courses has shown that:

What is pair programming?

In pair programming, two people work together to develop a single computer program. One of the programmers is called the driver and sits at the keyboard. The other programmer is called the navigator and sits next to the driver where she can see the screen clearly. The programmers change roles regularly - a good rule of thumb is every 20 to 30 minutes.

The navigator is responsible for watching the driver. She notes mistakes that the driver is making (for example, forgetting to enter the ';' at the end of a line), as well as assists in designing the code, making suggestions for improvement, and asking questions if the driver seems to be getting off-course.

Pair Programming in this class

In this class, when you sit down to work on one of the programming assignments, you must be working with your partner at one computer. One of you will sit at the keyboard while the other observes. This does not mean that one of you is doing all the work

While you are pairing, you should be talking to each other about what you are doing. Both partners should be actively involved.

Remember to trade roles regularly.

The following are not pair programming:

Instances of the above will be considered as cheating in this class, and will be treated as such.

IMPORTANT: If you are having problems working with your partner, please contact the professor or one of the TAs immediately. For example, if your partner stops showing up to work together, let us know so that we can address the situation.

Working Together and Academic Dishonesty

If you have any questions on this section, please see me. This is very important, and instances of academic dishonesty will not be tolerated.

The graded programming assignments are to be done by each student pair, working by themselves. You should treat these assignments like takehome exams. You may freely give and receive help with the computer facilities, editors, UNIX, debugging techniques, the meaning and proper use of Java constructs, etc.. You should not discuss the graded programming assignments with other students until after they are turned in. In particular you should not view another pair's program, or allow someone to view any part of your program, prior to turning it in. Obviously, copying any part of another pair's program, or allowing your program to be copied is not permitted.

A program will be in use to detect copying. This program is very good at finding programs that are copies of each other.

Ungraded practice assignments: In addition to the five graded programming assignments, there will be four, ungraded programming assignments. For these assignments you are free to consult freely with any of your classmates. You are encouraged to try and complete the assignments on your own. The experience gained in completing these assignments will help you with the graded assignments and the exams, which must be solely your own work.

All other work in this class must be done by students working alone.

Academic Dishonesty: Any confirmed academic dishonesty including but not limited to copying programs or cheating on exams, will constitute a failure of the computer ethics portion of this class and result in a no-pass or failing grade. You are encouraged to read the campus policies regarding academic integrity.

Facilities: This quarter you will using the Unix operating system for your programming assignments. You will use submit for turning in homework.

Homework: Turn in homework by using the submit procedures. It will not allow late work. Late work will not be accepted or graded. The program should be submitted in whatever form it is in - it is possible to receive some partial credit for a program that is not working. Homework is graded in terms of it being done in a good style, being correct, being concise, being readable, and being efficient. In addition to your program, you are required to submit logs indicating how much time you spent working on each assignment.

Quizzes: The first quiz will be on Monday, January 13th. The remaining quizzes will be on alternate Fridays, beginning with the second quiz on Friday, January 24th.

Audience: This course is for CS, CE and ISM majors and prospective majors. These are disciplines which emphasizes mathematics and problem solving. There are computer literacy and computer programming courses that are offered for the non-major. If you are shaky in your preparation you should consider taking CMPS010, which is highly recommended for all CS majors.

Syllabus

Date Topic Reading
January 3, 6 Introduction, Developing Software Chapter 1,
"Kindergarten" Paper
January 8, 10, 13 Program Fundamentals Chapter 2
January 15, 17, 22, 24 Statements and Control Flow Chapter 3
January 27, 29, 31,
February 3, 5, 7, 10
Functional Abstraction Chapter 4
February 12, 14, 19 Arrays Chapter 5
February 21 Review Chapters 2-5
February 24, 26, 28,
March 3, 5, 7, 10, 12, 14
Data Abstraction Chapter 6
Thursday, March 20, 8:00 AM Final Exam Chapters 1-6

Holidays: January 20 and February 17.


[Homepage] | [General Lab Info] | [TA's & Tutors] | [FAQ's] | [Supplements] [Homework] | [Sample Program Solutions] | [Exams]

This page maintained by Brian Hanks. Email regarding this site.

Many Thanks to Charlie McDowell for permitting the use of this material from previous instances of the course.