CIS 211 Computer Science II - Winter 2003

CRN 22112

Teaching Staff
Anthony Hornof, Assistant Professor, 356 Deschutes, , 346-1372
Amit Goswami, GTF, 237 Deschutes,, 346-1386
Ziming Huang, GTF,
Email all three at
Class Times
Lecture: MWF 1:00 - 1:50 PM, 240C McKenzie.
Labs: See DuckWeb, 026 Klamath.

Course Objectives
The objective of this course is to build on the basic programming concepts and practices that you learned in CIS 210, for you to continue your development as programmers and computer scientists. The course is structured around a number of important programming concepts, as follows: Problem decomposition, structured programming, files and streams, exceptions, inheritance, object-oriented programming, testing and debugging, event-driven programming, graphical-user interface programming, threads, and pointers and memory. Though the topics will be examined, discussed, and exercised primarily in the context of the Java programming language, students in this class should develop a general, abstract appreciation for these different concepts independent of Java.

CIS 210 with a grade of C- or better, Discrete Math 231 (for CIS majors). Corequisite: Discrete Math 232 (for CIS majors). If you have not completed CIS 210 in a previous term with a grade of a C- or better, you will not receive credit for this course. If you have questions, please see the instructor or your CIS advisor for help in planning your schedule.

Required: Java Software Solutions, 3rd edition, by John Lewis and William Loftus, Addison Wesley, 2002. This is the required book for the course and we will refer to it as Lewis and Loftus or just L&L. Previous courses used the second edition of this book. The basic layout and material in the third edition is similar, but the third edition contains more examples, more reference material, uses the latest Java 2 Version 1.4 SDK, and uses color.

Additional: Thinking in Java, 3rd Edition, by Bruce Eckel. This is an electronic book that can be downloaded for free from, or directly from A print version is also available from Prentice Hall, 2003. You will be required to read a few chapters from this textbook.

Some reading may be assigned from the online Sun Java Tutorial, which you can also use as a reference if topics discussed in the other readings or in class are not clear to you.

A small coursepack of required reading will probably be made available during the term.

Approximate grade weighting: Assignments 40%, Midterm 25%, Final 35%

Email and Communication
Email is an excellent means of communication when used properly. This class will give you the opportunity to improve your email skills. Email the professor with your questions, concerns, and input regarding the course, but always practice good "netiquette". The UofO Computing Center (UOCC) provides netiquette guidelines. (On this web page, skip past the "Glossary of Network Terms" to get to the section entitled "Practicing Good 'Netiquette'".) Read and follow the guidelines, with one addition: If you must have a signature file at all, keep it to a bare minimum.

All course-related emails sent to teaching staff should contain "211" somewhere in the subject line. Whenever possible, please use your "" email address in course-related emails.

Please turn off all cell phones and beepers before coming to class. Interruptions caused by these devices are discourteous and distracting and represent poor class participation. Please do not engage in distracting laptop activities such as surfing the web.

Diversity Welcome
The modern technology workplace is diverse, international, and intercultural. This is good. Different backgrounds and different perspectives help people working in groups to be more innovative. To the extent that this class reflects such a modern-day workplace, we will welcome and value these differences as an opportunity to increase our awareness of how to work better in groups, and how to build more useful computer systems.

Students with Disabilities
If you have a documented disability and anticipate needing accommodations in this course, please make arrangements to meet with me soon. Please request that the counselor for students with disabilities send a letter verifying your disability.

CIS 211 Academic Honesty Policy

  • All assignments turned in for the course must be your own work. Copying from other class members or other sources is not acceptable. If you collaborate with someone else on any assignment, you must indicate such on the work you turn in, and partial credit may be given.
  • Academic honesty is expected and cases of suspected dishonesty will be handled according to university policy. In particular, copying someone else's work (including material found on the web) will not be tolerated. If solutions to assignments are obtained from outside sources, the source must be cited.
  • You are also responsible for protecting your work. That is, you must take reasonable precautions to prevent your work from being copied. This means that if you store your assignment solutions on gladstone, the file permissions must be set to keep others from accessing your files. If you are working on assignments in the lab, you must remove any of your files on the lab machine before you leave.

CIS 211 Do's & Don'ts

  • Here are some suggestions for a strategy to pass this class:

    DO'S (a recipe for success in this course:)

    1. Read the textbook. The chapters we will cover are listed in the course syllabus. The text provides good core information - if you read over the material before class, you will get more out of the lectures and be able to ask questions. Come to lecture with questions.
    2. Read the entire homework assignment as soon as it is assigned, even if it's confusing. Do not wait until the topic is covered in lecture to start working. Lectures will give you a deeper understanding of concepts and go through examples. However, if you attempt to use lectures as your sole source of information, you will be sunk on the homework.
    3. Do your own work. You can discuss the problems with classmates, but then start over and work them out yourself. Otherwise it is very easy to fool yourself into thinking that you understand the material well enough to do it yourself. The exams are worth 70% of your grade. You will be on your own in the exams, so learn to work on your own. (Also remember our strict rules about cheating.)
    4. Go to labs. They give you a head start on your homework and can save you many hours.
    5. Ask for help after you have made a sincere effort to figure something out. When you have an idea for solving a homework problem feel free to run it by the professor or GTFs. We will try to give you a thumbs-up or thumbs-down on your strategy. This can save you enormous amounts of wasted time. Again, you want to do this early.
    6. Document your code with comments. Pay attention to coding style and strive to make your code neat and easy to read. Write all software as if it will be seen by experts and be around for a long time.
    7. Experiment. If you wonder whether or not some code is legal or does what you want, try it out. Learn from the compiler by trying small chunks of code to see whether it compiles and works the way you think it should.
    8. Use the Java API documentation. Become familiar with how to read the API. The holy grail of software development is re-use, so learn how to find and use existing classes and methods.
    9. Aim for elegant solutions. Don't be satisfied with a "quick and dirty" program to produce the correct results, but refine your work to the best solution possible.
    10. Debugging skills we introduce can save you vast amounts of time and frustration. Watch for them.

    DON'T (Each of these, alone or in combination, usually leads to failing this course.)

    • Do not wait to start homework
    • Do not spin your wheels for hours before you get help from 210 staff
    • Do not work in groups

The course policies, web page design, and web content are derived from Prof. David Atkins' CIS 210. - 1/8/03