C Sc 127A: Introduction to Computer Science

University of Arizona, Spring 2006 Syllabus

University Catalog Description:  (4 units) Programming in a high-level language such as Java. Emphasis on program design issues. Programming topics: basic control structures, primitive data types, arrays, classes, simple recursion.

When/Where
: 3 hours lecture on MWF @ 3:00-3:50 in EDUC 211. We also have a two-hour recitation/laboratory section on either Tuesday or Wednesday in 930 Gould Simpson.

Web Site: The course website has all current course information. It is updated almost daily with announcements, lecture outlines, and programming assignments. It is located at http://www.cs.arizona.edu/classes/cs127a/spring06/

Instructor: Rick Mercer http://www.cs.arizona.edu/people/mercer

Rick’s Office Hours in 727 Gould-Simpson

About the Course: This course provides an introduction to object-oriented programming using the Java programming language. Topics include types, syntax, control structures (selection and repetition), encapsulation (classes, methods, parameters, instance variables, scope), and arrays. This course also provides experience with a professional-level testing framework, debugging techniques, problem solving strategies, as well as concepts and properties of an algorithm. You will be using an integrated development environment (Eclipse) that was built at costs surpassing $40 million to help programmers develop software with Java.

This course has a common lecture MWF plus a weekly 2-hour recitation/lab (the 4th unit) that is facilitated by your section leader. All recitation/lab meetings are held on Tuesday and Wednesday in 930 Gould Simpson.  You will complete lab activities with one other person in a pair-programming mode. You will also complete programming projects individually outside of lab and lecture.

Prerequisites Officially, the catalog prerequisite is: "Algebra recommended".  This implies a certain level of sophistication in math. It will help if you know arithmetic, variables, functions, and the notation x0 through xn-1 to refer to a collection of numbers. We assume you are familiar with a computer (files, folders, email, and the internet), but if you are not, you can get help from section leaders in the lab. However, this course is designed for students with no previous programming experience.

Course Philosophy and Learning Objectives: The instructor and section leaders will facilitate lectures and labs to help you learn the process of programming and guide you in developing skills that will serve you in this course, future courses, and industry. We ask you to take responsibility for your learning by coming to class every day, preparing for class as indicated in the homework, participating thoughtfully in all daily class activities, and respecting others in your team and your class as a whole.    

When you successfully complete this course, you will

Test-driven development was the most important thing I learned in college", Former student now working as a software developer.

"When I told them I was doing unit testing, they made me the offer immediately", CSc 335 student now working in industry.

Textbook Please the following required book for the course, which is available in the bookstore or online by clicking on the book title or book cover ($60 new from the publisher).  


Computing Fundamentals with Java

Rick Mercer
Franklin, Beedle and Associates
2002 ISBN 1-887902-47-3

Working in Teams in Lectures

During this course, you are offered the opportunity to work in teams of 2, 3 or 4. You will not be required to work with a team outside of class. Each person who is present will receive the same grade for the in-class activity. We have chosen this method for a number of reasons.

  1. Almost any job situation or volunteer organization you become involved with requires you to work closely with other people. This important skill is rarely taught, and must be experienced.
  2. Two, three, or four heads are usually better than one. Everyone can contribute a valuable insight or question. You also learn by listening to your neighbor. 
  3. We'd like to help you understand that you need to take charge of your own learning. One way to do this is by becoming an active responsible member of a team
  4. One option for final grade in this class is, in part, based upon work that you do with a team during lecture (see grading below). Everyone will be asked to work in a pair-programming mode during lab/recitation sections.


Working in the Lab/Recitation section:  This course has a two-hour per week scheduled recitation/lab section that your section leader will facilitate. These sections have a variety of activities including a chance to review lecture material, ask questions in a small classroom setting (the largest section is 20 students), and provide a chance to develop programs with one other person in a pair-programming mode (see definition given later). We will try to get you to pair-program with almost every other person in your section. You may also have the same pair-programming partner for several weeks.

Course Grade: Your grade will be based on the following scale. It strongly encourages you to attend all classes and all sections.

14% Labs (completed during the 2-hour recitation/lab section, drop lowest 1)
24%

Individual Programming projects

14% Highest Test Score (out of 3)
12% Middle Test Score (out of 3)
10% Lowest Test Score (out of 3)
12% In Class Activities. The average will be multiplied by 1.1 to simulate dropping the lowest 3
14% Final Exam

Individual Work and Makeup: All work handed in as individual work must be done individually (see the statement concerning academic integrity below). Individual grades are comprised of three tests, a final exam, and programming projects completed outside of class with a "late day" policy described below.

If you going to miss a test or the final exam for some valid reason, contact Rick to get permission to take a make up. Unless you are physically unable, call Rick's office (621-6126) BEFORE the test. Leave a message detailing how to contact you to discuss alternatives. You may also send e-mail BEFORE the test. Without PREVIOUS notification and a valid excuse--documentation required--you may not be able to make up the missed test or you may receive a penalty on a different and more difficult exam.

There will be approximately ten individual programming projects with their own specification, point value, and due date. Each student is granted a total of three free "late days" to avoid late penalties. A late day is two calendar days. For example, a project due at 9:00 p.m. on Wednesday and turned in electronically the following Friday before 9:00 p.m. constitutes one "late day". You would use up two late days if the same project is handed in before 10:00 p.m. on the following Sunday night.

 

If you have use all “free” late days and still turn in another project late, you will receive a 33.3% reduction (rounded to the nearest integer) of the maximum points per program per late day. For example, after your three free late days have been used up, one late day on a 100-point project results in a 33 point late penalty. All programs must be in by the final day of classes, even if you have remaining late days.

 

This late day policy was designed to allow for extenuating circumstances and to avoid the need for you to give reasons. You don't need to consult us if you are going out of town or are sick. You won't get any extensions except under extreme circumstances that are properly documented. This policy results in very few people who actually lose points due to late penalties while avoiding the need to seek us out to give us your reason, which may be quite personal.

In-Class Activities--NO Makeups:  All team members are responsible for the work turned in on during in-class activities. Everyone who participates in a team assignment will receive the same score. Because of this, we encourage you to look over and discuss the quality and accuracy of your team's work before it is turned in. All work handed in as team must have each members name who took an active part in its production. Credit will be given only to those who were there and participated. In-class group work by its nature cannot be made up, although alternative assignments will be given in case of written medical excuses or official university excuses such as NCAA sports. We will be dropping the lowest four (4) in-class activity grades. The first in-class activity that counts will be Wednesday, 19-Jan.  If you add after this date, you will get zeros for any missed class.

Unless otherwise specified, the following criteria will be applied when grading in-class activities

0  inadequate, inappropriate, or not handed in
1  attempted but inadequate because it is incomplete or mostly incorrect
2  adequate, complete, mostly correct
3  demonstrates substantial thought, complete, and virtually all correct

3. Recitation/Lab Section: Lab exercises are to be completed during your 2-hour lab.

 

Even if you have previous programming experience, you should attend all labs. Previous experience has shown that such students still learn a lot. Virtually all students (94% over two surveys) report that labs are valuable and section leaders are very helpful. A problem that takes you one frustrating can often be fixed within minutes (or even seconds) by your section leader. We also recommend that everyone attend all classes to experience the teamwork activities and see how you are doing in all areas.

Section Leaders: This course has a fifty-minute per week scheduled recitation section facilitated by your section leader. These sections have a variety of activities including a chance to review lecture material, ask questions in a small classroom setting (the largest section is 20 students), and develop algorithms and code as a whole or in teams. All section leaders have taken CSC courses with section leaders. They also participate in a credit course designed to learn how to be an effective section leader. Section leaders grade programming assignments and tests, develop and edit course materials, help make pedagogical decisions, keep the instructor up to-date with student progress, and provide assistance in the lab.

Computer Access/Setup: The CS Department has a lab of recently upgraded (2.8 ghz, 1 gig RAM, 17" flat screen monitor) Window workstations that you may use to complete your programming projects. You must set up your account even if you are working at home. You will not be able to turn in your programs unless you get this account. Therefore, it is important that you go to Gould-Simpson 9th floor to set up your computer account A.S.A.P. Go during normal business hours and follow the big yellow arrows and the instructions for setting up an account. Your card should be available immediately after you read the rules and run the apply program. You must return this card at the end of the semester (or pay a $10.00 fee). Accounts are generated only after 6:00 p.m. each night. Don't expect to be able to log into a Windows workstation in our lab until the day after you get your account established (although you may be able to after 7:00pm on the same day).

We will be using Java 5 and Eclipse 3 in the lab and in lecture. Both of these tools are free. Therefore, you can set up your home computer with the same tools we use in lab and in lecture (instructions are on Downloads page).

Academic Integrity and Penalties:  Programming assignments in this course require individual attention and effort to be of any benefit. Unless otherwise specified in the published assignment, all work is expected to be that of each student alone. You may not consult with others, except in ways specifically authorized by the course instructor. Students are responsible for understanding and complying with the University's Code of Academic Integrity. The full text is available from the Office of the Dean of Students in Room 203 Old Main. It can also be found at

http://w3.arizona.edu/~studpubs/policies/cacaint.htm


Among other provisions, the Code demands that the work you submit is your own, and that graded programs and exams will not subsequently be tampered with. The Code also demands that you do not copy code when it is part of a published class assignment. It is immaterial whether the copying is done electronically, by retyping the code, looking at another person’s screen, or any other means.