| On This Page |
|
|
| Instructor Information |
| Name |
Ed Parrish |
| Email |
See instructor's homepage. |
| Office location |
See instructor's homepage. |
| Office hours |
See instructor's homepage. |
| Phone |
See instructor's homepage. |
| Contacting Instructor |
If you have any questions about the course or need assistance, please contact me during office hours in person or by telephone, or at any time by e-mail. |
^ top |
| Course Information |
| Course title |
Java Programming |
| Course Number |
CS 20J |
| Section Number |
39724 |
| Course description |
Presents programming, documentation, and software-design methodologies using Java. Includes a brief review of control structures, methods and arrays as students rapidly progress to object-oriented programs of moderate complexity. Advanced topics include: inheritance, polymorphism, exceptions, graphics, graphical-user interfaces, files, streams, threads and dynamic data structures. Prepares students for CS 21 and CS 24 |
| Course dates |
02/07/05 through 06/04/05 |
| Location |
Room 509 |
| Meeting day(s) |
Monday, Wednesday |
| Meeting time(s) |
10:00 A.M. to 11:30 A.M. |
| Prerequisite(s) |
MATH 4 |
| Recommended Preparation |
CS 12J or equivalent; Eligibility for ENGL 100 and READ 100 |
^ top |
| Course Objectives |
| |
- Design and implement Java programs to solve problems of moderate complexity using object-oriented methods.
- Correctly and effectively use the following language elements:
- classes and objects
- structured data
- types such as arrays and files
- dynamic data types such as linked lists
- event handling
- class inheritance
- interfaces
- visual components
- multithreading
- Write clear and well-documented code using descriptive identifiers, standard indentation, and adequate comments.
- Apply well-known software development principles and techniques including:
- stepwise refinement
- incremental development
- testing
- data encapsulation and information hiding
- write applets as well as applications.
- Succeed in CS 21 or CS 24
|
^ top |
| Who Should Take This Course |
| |
The following people will benefit from this course:
- Students preparing for transfer to a college or university to study Computer Science or Computer Engineering
- Programmers who want to learn Java at a faster pace than CS-12J.
- Programmers who want to learn object-oriented programming
|
^ top |
| Student Readiness |
| Email |
All students are requested to have an e-mail account. |
| Internet Access |
You need Internet access to view course materials on my web site, to turn in assignments and to take quizzes. Internet access is available in the CTC for all students enrolled in this course. |
| Programming Skills |
Prior training or experience in programming is important preparation for this course. If you have no experience or training, then you should take CS-12J. At the very least, you need to discuss your situation with the instructor. If you have had previous experience or training, but are a little rusty, you should be able to refresh your skills with little difficulty. |
| Technical Skills |
Students need technical skills in the following areas to be successful in this course:
- Computer Basics
- File Management
- Text Editing
- E-mail
- Web Browser
- Programming Skills
Use the CS-20J Readiness Self-Assessment form to check if you have at least the minimum preparation needed for this course. Most of these skills are taught in CS-1 and CS-12J.
|
| Patience and Time |
If you have enough time to sit in class and in lab, but don´t have 8-12 hours a week to devote to homework, drop this class. You will need time to experiment with the details of the programming language, and to design solutions to assignments. |
^ top |
| Textbooks and Other Materials |
| Required books |
Java: How to Program, 6th edition, Deitel & Deitel, Prentice Hall, ISBN 0-13-148398-6, book Web-site. Note that either the 4th or 5th edition is acceptable, and probably cheaper, but you must convert the reading assignments yourself using the topics as guides rather than going by the chapters and pages. Since they reorganized the book in the 6th edition to introduce objects in a bizarre and ludicrous location, this is the last semester I will be using this textbook. |
| Recommended books |
Thinking in Java, 3rd Edition, Bruce Eckel. See http://www.mindview.net/Books/TIJ/. The book is free and is another source of information on Java programming.
|
| Other Materials |
Source code files for textbook: Available from the CD that came with your book or from the book Web-site.
|
^ top |
| Course Structure |
| |
The course is organized around the classroom, like most traditional courses. In addition, there is considerable online content. |
| Typical Class Session |
A typical class session is organized like the following:
| Time | Event |
| 10:00 AM | Announcements and discussion of questions that have short answers or broad interest within the class |
| 10:10 AM | Lecture and discussion |
| 11:20 AM | Exit classroom (10 min. for passing time) |
| 11:30 AM | Class officially ends |
Each week you have assigned reading, which you are expected to complete before class. During class, you will be expected to join in the discussions and answer questions when called upon.
|
| Programming assignments |
After the reading and class meeting, there is a programming assignment for most lessons. The programming assignment is aimed at applying what you have learned to new situations, analyzing the problems and seeing the patterns in the programming language. You will turn in your programming assignment using the Assignment drop box tool in WebCT. |
| Exams |
There are two tests during the semester: a midterm and a final exam. The midterm covers the material from the first half of the course and the final covers material from the entire course. However, the focus of the final is the newer material learned in the last half of the course. I will use WebCT to administer the tests. |
| Project |
The last programming assignment is the Sampler Project. The purpose of the project is to integrate the techniques you have learned from this course. I specify several requirements and you must make many design decisions. |
^ top |
| Grading Policies |
| Assessed areas |
Your final grade is weighted based on your performance in the following areas:
| Programming assignments |
40% |
| Midterm Exam |
25% |
| Final Exam |
35% |
|
| Programming assignments |
Programming assignments are due at the beginning of class unless otherwise shown on WebCT. I will not accept late assignments because assignment solutions are both discussed in class and posted. However, it is possible to improve assignment scores by completing extra credit work. Most assignments have some extra-credit suggestions.
Also, note that the Sampler Project is graded as a double assignment.
If you are going to miss class, then you should arrange to turn in your homework before class starts. Since we use WebCT, you can submit your homework from any computer connected to the Internet. For paper-based homework, I have a mailbox in the CTC.
If you do not want to complete the homework because the assignments are not challenging enough, see the instructor for more challenging assignments.
|
| Midterm Exam |
The midterm exam is a cumulative exam and must be taken when scheduled, except by prior arrangement with me.
If you score below 70% on your midterm exam, you may request the instructor to weight the final exam more heavily and the midterm less heavily. For such requests, the instructor will weight the midterm 5% less and the final exam 5% more. You must make this request in writing, such as e-mail, before the final exam.
|
| Final Exam |
The final exam will be a lab practical and must be taken when scheduled, except by prior arrangement with me.
|
| Grade interpretation |
Overall grades are calculated using the sum of the weighted averages of each performance area. Extra "points" from one area does not affect another area. Your overall grade is interpreted on the following scale.
| Grade |
From |
To |
Description |
| A |
90% |
100% |
Outstanding work demonstrating mastery of the subject. |
| B |
80% |
89.9% |
Above average work with a solid understanding of the subject. |
| C |
70% |
79.9% |
Satisfactory work meeting all minimum requirements. |
| D |
60% |
69.9% |
Substandard work not meeting expectations in one or more areas. |
| F |
0% |
59.9% |
Unsatisfactory work. |
If you have questions about scores on any assessment, please contact me right away. I want to ensure both that you understand the material and that your grades are accurate and fair.
|
^ top |
| Alternate Grading and Incompletes |
| Credit/No Credit Option |
By default, everyone receives a letter grade. If you request the Credit/No Credit Option, you must complete the course work at a satisfactory (i.e. "C") or better level. For more information, see the Cabrillo Academic Policies and Procedures document. |
| Incompletes |
You may request an incomplete from the instructor if you are doing passing work and regularly attending at least 75% of a course, but are unable to take the final exam (or otherwise complete the course) because of illness or other unforeseeable emergency and justifiable reasons. You have one year to complete the incomplete. For more information, see the Cabrillo Academic Policies and Procedures document.
|
^ top |
| Working Together |
| Pair Programming |
Pair programming is a practice that helps programmers improve program quality and productivity (see The Costs and Benefits of Pair Programming). In addition, some studies show that some students learn better when they work in pairs. Thus, I encourage all students to work with one other student on homework assignments following the rules of pair programming.
|
Working in Groups |
If you decide not to work using pair programming, but still would like to work with other people, then there are restrictions on what you can do. Specifically, you are not permitted to show your homework answers or code to any other person before you turn in an assignment, with the exception of a Cabrillo College Computer Science Instructor. Viewing or copying any part of another person's program, or allowing your program to be copied or viewed is cheating.
What you may do when working with other people is:
- Show others how to use, or solve problems with, computer applications such as compilers, text-editors and debuggers
- Discuss problems and ideas for solving problems
- Describe algorithms using diagrams or natural-language statements
Group work can accelerate learning, but only when each student takes responsibility for mastering all the material. Little is learned if each student works only one or two problems and merely copies answers for the rest.
If you have questions about what is permissible, please ask me.
|
^ top |
| Academic Honesty |
| |
Academic honesty means that you give credit where credit is due. Students who are academically dishonest hurt both themselves and other students. They rob themselves of both the knowledge of the material and the experience of learning how to learn. This harms other students as well because nobody can trust that the graduates of a course know the material.
Academic dishonesty includes:
- Cheating: Intentionally violating the rules of the course by possessing, communicating, using, or attempting to use materials or take actions that the instructor has prohibited.
- Plagiarism: Use of distinctive ideas, words or code belonging to another person, without sufficiently acknowledging that person's contribution.
For any work submitted in this course, you are not authorized to copy or use work from any source without crediting the source. You may use small snippets of work posted on the web or found in books, as long as it is lawful. However, you must acknowledge the source well enough so that it is easy for the instructor to find. Note that the instructor uses various services and tools to detect cheating by comparing your work with other students, books and the web.
On homework assignments and projects, you are free to discuss problems and ideas for solving problems. You may give and receive help with computer problems, editors and debugging techniques. It is also acceptable to discuss general approaches to problems or algorithms with others. However, you are not free to show your actual homework solutions or code to any other person before you turn in an assignment. Viewing or copying any part of another person's program, or allowing your program to be copied or viewed is not permitted.
During exams, I expect there to be no talking and no wandering eyes. In addition, you may not communicate with any person except the instructor. You are responsible to make it abundantly clear to me that you are not cheating and that you are working alone.
Any person caught cheating or plagiarizing will be given a grade of zero for the assignment or exam. The second offense will result in a no-pass or failing grade for the course. These offenses will be reported to the Dean of Student Services for inclusion in your academic record.
|
^ top |