CS 170 Syllabus, Summer 2008

The instructor, Stephen Gilbert

Hello, my name is Stephen Gilbert. Welcome to the CS 170, Java Programming I information page. Java Programming I is a transfer class for Computer Science (as well as some other science) majors. CS 170 is typically the first class in the Computer Science sequence, and is required if you intend to take advantage of the UCI SMART-ICS transfer program.

In Summer 2008, we have one section of CS 170, a lecture-lab class that meets three times a week, on Mondays, Tuesdays and Thursdays evenings from 6:15 to 9:35, in the OCC Computing Center.

 

Who, Where, and When

Let's start with the where and when. Our class will meet in room 104 (or room 105 if I can get us switched) in the Clark Computing Center. (Map: building 73 in the upper-left corner, across from the softball field, by the Adams St. Parking lot.). The class will meet three days a week, Monday, Tuesday and Thursday, from 6:15 to 9:35. If you look on your schedule you got when you registered, you'll actually see separate lecture and lab times, but, that's just "book-keeping" notation introduced by the new Banner registration system. The lecture and lab are not separate; we'll be in a room with computers, and you'll be doing hands-on exercises throughout the class period.

Instructor Contact Information

  • Stephen Gilbert
  • Office : Clark Computing Center F
  • Office hours : Usually a half-hour before class
  • Email : StephenGilbert@gmail.com or sgilbert@occ.cccd.edu
  • Office phone : (714) 432-0202 ext 21173
  • Home page : http://csjava.occ.cccd.edu/~gilberts/

What is CS 170 All about?

Here's the official course description from the OCC catalog:

This is a beginning course in the Java programming language. Students will learn object-oriented programming, and will create applets which can be incorporated into HTML documents for the World Wide Web.

At OCC, CS 170 is one of the first courses in the Computer Science major for students who intend to transfer to a 4-year institution. This class will introduce you to the principles of Computer Science, using the Java programming language; it isn't a "Web programming class" like HTML or JavaScript.

Prerequisites

In this class, you will learn to write programs, but you won't learn how to use a computer. Before you enroll, read the following section, and make sure you feel you've mastered the skills I've listed here. There is no prerequisite for this course but I assume that you are "computer literate". In the context of this course, that means you know how to:

  • Install and run programs on your computer
  • Create and save plain text files using a text editor
  • Copy, move, delete and find files and folders
  • Browse the World Wide Web and use email.

If you don't feel comfortable doing these things, you should take either CIS 100 or CS 111, which are basic "computer literacy" courses.

You do not have to have any programming experience, but you might find the course easier if you've successfully completed a course in another programming language such as Visual Basic, Pascal, or C++. You'll also find the course easier if you know how to use a command-line interface, such as the MS-DOS Command Prompt, the Unix shell, or the Mac OS/X terminal application. (One of your exercises during the first week of class is to complete a tutorial on using the Windows command line.)

Goals and Objectives

In this course you'll learn how to write computer programs, using the Java programming language. On successful completion of the course, you will be able to:

  • Explain the Java programming model, particularly its support for object-oriented software development, and cite its strengths and weaknesses.
  • Learn to use a variety of development tools for creating Java programs.
  • Design and code Java programs, applets and applications, console and GUI programs, using Java's Swing and AWT class libraries.
  • Read and understand the official Java documentation sufficiently well that it serves as a primary vehicle for further learning.

In addition, the class now has Student Learning Outcomes or SLOs. Students will be able to:

  1. Create, compile, execute, and test Java applications and applets by applying object-oriented programming techniques, including designing classes and methods, and implementing concepts of polymorphism and inheritance.
  2. Implement selection structures (if/else and switch), repetition structures (while, do/while, and for), and one- and two-dimensional arrays.

How can I succeed in CS 170?

Here's the information you need to succeed in CS 170. Below you'll find information about the course workload, the exams, quizzes, exercises, discussion, and homework, as well as information on how you'll be graded.

How much time will I have to spend on CS 170?

Everybody learns in different ways and at different speeds; in general though, you should plan on spending about two hours each week outside of class, for each class lecture hour, if you're an average student and want to receive an average (C-B) grade. For the summer CS 170 session, that translates to about thirteen hours a week, in addition to the ten hours of classroom time. If you're a good student, have quite a bit of programming experience, or you're satisfied with a lower grade, you may get by with less. If you have difficulty with the material, or if you want to receive an A in the course, you'll probably have to spend more time.

Rather than trying to get your thirteen (extra) hours in by staying up all night every Sunday, try to budget your time. If you spend three hours every day, an hour and a half reading the material, and another hour and a half in the computer lab, or on your computer at home, working on problems, you'll have the weekends free to head to the beach. (Since class starts at 6:15, you might just try coming a little early and staying a little while afterwards to get your work done. During the summer, the lab will be open until 10:30.)

What exams and quizzes will I take?

There are 3 exams in this class, two midterms and a final. Each exam will have two components: an objective written exam, and a programming exam where you'll be asked to create a program in the lab. You'll have the entire class period for each exam. Each exam will count for about 20% of your grade in the course (60% total). Each exam will be cumulative, but focus mostly on the most recent material.

Quizzes

There will be 7 chapter quizzes taken during the class period. Quizzes are designed to make sure you read the book, understand the material and to highlight any areas of concern. The quizzes will count for about 5% of your final grade.

What about programming exercises, labs and homework?

Learning to program is a lot like learning to play the tuba; you'll never be any good unless you practice. To help you do this, you'll spend most of your homework time writing programs. Each week I'll assign several problems from the textbook and some problems that I've made up.

Some of these will be short problems that you can do in a few minutes; most will take between fifteen minutes to a half hour. At least one problem each week should take you a couple of hours to complete.

You will turn in all of your assignments electronically. Programs will be graded on correctness and style, usually by running them against some sample data, and by checking the output with a style-checking program like Checkstyle. If possible, I'll use an automated program checker like Web-CAT from Virgina Tech. Many of the practice problems (and some of the test problems as well) will come from Nick Parlante's Javabat.com.

In addition, each class period, you'll complete several in-class exercises along with the lecture. The programming homework assignments and in-class exercises will be worth 32% of your grade.

Class Participation

One of the greatest learning resources at your disposal are the other students you'll meet in this class. Take advantage of them; ask the person next to you to help you with something you don't understand, or offer to help someone else who is struggling.

To encourage you to help each other, I want you to use the online discussion area to ask all of your technical questions, instead of sending me an email message. Let's keep email for "personal" correspondence--things like "I'll be missing class this Tuesday", instead of questions like "Why do I get this error message when I compile?" If you ask these types of questions on the discussion board, you'll help all the other students who are having the same problem, but didn't think to ask. (I will answer questions posted on the discussion board, after I've given your fellow students an opportunity to respond. I also read all of the messages on the discussion board, even if I don't reply.)

I will post class announcements and general tips in the Announcements section on the discussion board. You should make sure you check regularly (at least a couple times a week) for new announcements.

How will I be graded?

You may take this course for a grade, or on a CR/NCR basis. If you take the course for credit/no-credit, you must obtain a score equivalent to a "C" to get credit. (If you're transferring, though, make sure that the institution you're transferring to will accept CR/NCR; most institutions won't if it's a requirement for your major.)

Grades will be assigned based on the following weights:

3 Exams @ 100 points ea. 300
7 Quizzes @ 10 points ea. 70 points
21 Homework Assignments @ 5 points each. 105
21 In-class Exercises @ 3 points each. 63

As you can see, this adds up to 538 possible points you can earn; there is no extra-credit. In lieu of extra-credit (or makup-assignments), You will be graded using 500 as the maximum possible "base" points. Letter grades will be assigned using the following scale, based upon a maximum of 500 points:

Grade Percent
A 90
B 78
C 65
D 52
F <52

At my discretion, I will "curve" the exam points if the overall results are too low. I won't "reverse-curve" them, however; if everone gets high grades, I won't lower your grade to fit the curve. No student will receive a grade less than that prescribed by the above schedule.

What textbook and software will I need?

 
Big Java, 3rd Edition
by Cay Horstmann, San Jose State Univ. 
ISBN: 9780470112090
© 2008

The text should be available in the OCC Bookstore or from Amazon and other online booksellers. It costs about $115 new.

WileyPlus

You don't have to buy the textbook! Instead, you can go directly to the WileyPlus site:

http://www.wiley.com/college/buywileyplus
and purchase a WileyPlus registration code for about $46. WileyPlus contains the full online version of the textbook.

Besides the online e-book, the WileyPlus also features exercises from your textbook that you can compile and run using your Web browser (provided you have the Java 6 JDK installed). These exercises are entirely for your own benefit; we will not be using WileyPlus for testing or homework submission. If you buy a new textbook, you should receive a free registration code for WileyPlus so you can read the book online, (or sell it to another student). If you buy a used textbook, you'll would have purchase a separate access code if you want to use WileyPlus. Don't do that.

The URL for the CS 170 WileyPlus class section is:

http://edugen.wiley.com/edugen/class/cls62778/

Many of you prefer to purchase a used book (or share a book with another student). That's perfectly fine; you don't have to use WileyPlus at all; it's just a (possibly) less expensive way to purchase the textbook and help you study for the class.

Software

All of the software you need to complete this course is installed on the computers in the OCC Clark Computing Center. However, many of you will want to work at home, especially if you are in the online section. Here is a short list of the software you'll need to install on your computer to complete the course. All of this software is free.

Windows Platform

Operating System Version
You will need Microsoft Windows W2K, XP or Vista. You cannot use Windows 3.1 or a version of Windows NT earlier than 4.0. I strongly recommend that you use W2K or XP rather than one of the earlier operating systems. Students enrolled in this class can get a free copy of XP Professional at the Clark Computing Center Information Desk. (I'd get one while they're still available.)

Compiler & Software Development Kit
You will learn how to download, install, and setup the Java Software Development Kit (SDK) in the first week of class; you don't need to do it ahead of time. You should use the Java 2 Software Development Kit version 1.6.0 or later. (On the Mac, you'll need Version 1.5.0 which should already be installed if you have "Tiger" or "Leopard".)

IDE
For this class, we'll start out writing our Java programs using a regular text editor, using the Scintilla text editor (SciTE), which is also installed on the computers in the Computing Center.

Later in the semester, you'll use two different Integrated Development Environments (IDEs), which can make some tasks easier. Here are the IDEs that we'll use in class, and that I'll discuss and demonstrate during the semester.

  • The BlueJ IDE is designed specifically for learning how to program in Java. BlueJ is unique in that it allows you to create objects interactively, and then manipulate and examine those objects. BlueJ also includes a debugger and an automated testing facility for testing the classes that you develop. BlueJ is written in Java, so it runs on Windows, Unix, and the Mac.
  • The Eclipse IDE is a free, open-source program, written in Java, and originally created by IBM. Eclipse is the basis for IBM's Websphere Application Developer IDE. Eclipse is a very sophisticated and complex program, that is fairly hard to learn. It also requires a fairly up-to-date machine with at least 256 MB of memory, preferrably more. Eclipse also has many features not found in simpler IDEs, such as code-completion and the ability to directly work with a CVS version control system.

Both of these IDEs are installed on the machines in the Computing Center. We'll use them as the semester progresses.

Browser
You must use a Java 2 capable browser. This means Netscape 6 or greater, Opera, Mozilla, FireFox, or Internet Explorer 5 or greater (with the Java 2 plugin). In the Computing Center we use IE 6 and Firefox. You cannot use IE with the Microsoft Java Virtual machine, or the Navigator/Communicator 4x series.

Macintosh Platform

Although our labs are Wintel PC's, you can complete this course using the Macintosh as long as you use Mac OS X. (I personally, prefer using the Mac as my Java programming platform, because the programs look so much nicer with the Aqua interface.) You cannot use earlier versions of the Mac OS to complete the course.

Mac OS X already has the Java SDK installed as part of the operating system, and the Safari browser will automatically use the built-in Java 2. Make sure you use Apple Update so that you are using (at least) Java 1.5. Although there is a developer release of Java 6 for Apple, many of the applications we'll use (such as BlueJ) haven't been updated, so you should stick with 1.5.

If you want more information on Mac-specific Java topics, visit Apples' Java Developer area.

Text Editor or IDE
When working on the Mac, you can use Eclipse or BlueJ. You can't use SciTE, however; SciTE only runs on Linux or Windows. You can, though, use the OS-X Terminal window to compile and run your programs, and any Unix text editor, such as vi or pico, to edit your source code. You can also use the free graphical text editor, TextWrangler, in combination with the Terminal application. Finally, you can, install the Apple XCode IDEs which come free with the OS-X developer tools. (Most Mac students prefer either BlueJ or Eclipse, which both work just fine.)

Linux and other Platforms

For Linux, you can now get the latest version of the Java Development Kit directly from Sun (Currently 1.6.0_03). If you want to use the latest version of Mozilla or FireFox, (or any browser that has been compiled with gcc3.2), you must use a SDK version 1.4.2 or later.

What are the "rules" for this course?

Late Work

One of Murphy's laws says "if something can go wrong, it will". Try to keep this in mind as you plan your coursework. The network in the lab may be down, you may accidentally reformat your disk, you might have more difficulty with a problem than you expect, and, yes, your dog might even eat your homework. (I keep a set of student disks that my dog ate, just to remind myself that this is not always a fictitious excuse.)

Since all of these things can happen, you need to emulate the Boy Scouts, and "be prepared." The best preparation is to do your work early, not late, because I will not accept late work, period.

Instead of allowing you to turn in late work, I allow you to earn a certain amount of extra credit as "wiggle points" (38 in this class). That means, you could skip 4 quizzes or 8 homework assignments, and still end up with an almost perfect score. Of course, if you do all of the assignments the extra points will be extra credit.

You must take the Final Exam to pass the course, but you do not have to take both of the Midterms to pass the class. If you miss one of the Midterm exams, that percentage of your exam score will just be added to the Final. (If, for instance, you miss one Midterm, your Final will then count for 40% of your grade instead of 20%). You cannot miss both Midterm exams, however.

Attendance and Withdrawal

Quiz material is taken from the lecture, as well as from the textbook, so it's important for you to complete the material. If you miss four or more classes, you may be dropped without notice.

Don't assume, though, that you will be automatically dropped if you fail to complete the material. It is your responsibility to withdraw from any class. If you stop attending, yet fail to withdraw, you will receive a grade of 'F'.

Please pay special attention to the OCC drop deadlines. Every semester I have students who want to drop the class after the deadline to drop has already passed. Those students end up getting an 'F' in the class if they are unable to complete the coursework. I do not give Incomplete grades.

Academic Honesty

Programming by its nature relies on learning from the work of others. You are encouraged to examine each other's code and to discuss various approaches and coding styles. You won't really learn anything, though, if you don't "try it yourself".

In this regard, discussing the general method used to solve a problem is certainly encouraged. Taking another student's source code and modifying it is really counter-productive; you learn to program by working out the programming exercises and assignments. If you don't do the assignments yourself, you won't learn how to program, and you won't be able to pass the programming exams.

When it comes to testing time, I expect you to maintain a high level of academic honesty. Cheating on exams will result in course failure. (The quizzes are open book, so, as long as you find the answers yourself, that's OK.)

Disruptive Behavior

You are entitled to an environment that encourages learning, as are all your fellow students. You should not behave in a manner that negatively impacts other class members. In a classroom. In an online class, disruptive behavior includes "flaming" or harassing email, as well as posting offensive material on your class Web site.

I expect all of you to be polite, respectful, and helpful to your fellow students; in short, I expect you to act like adults should act. If, in my judgment, your behavior negatively impacts the rest of the class, you may be subject to disciplinary action.

Disabilities

If you have a disability that may impede your ability to successfully complete this course, you should contact the Disabled Student's Center (432-5807 or 432-5604 TDD) not later than the first week of the course. Their staff will assist you in arranging accommodations that can help you meet course requirements.

Reservation of Rights

I reserve the right to change this syllabus, including, without limitation, these policies, without prior notice.