Syllabus for CSE 421, Winter 2009 (listed as 494J)


Instructor Prof. Atanas (Nasko) Rountev
TA Christie Deiters
Time/Place MWF, 1:30–2:18, in BO 313
Credits U 3

Short Description

Introduction to professional software development in Java; tools for coding, testing, version control, documentation; language-specific best practices stemming from principles of component-based design.

Course Objectives

The aim of this course is for students to:

  • Master core Java language features including: objects, classes, interfaces, inheritance, and exceptions
  • Master core SDK packages including: collections framework, logging, and IO
  • Master core best practices for component-based development including: separation of abstract state and concrete representation and coding to the interface
  • Master the use of a modern IDE, such as Eclipse
  • Be familiar with advanced language features including: iterators, generics, and assertions
  • Be familiar with foundations of an object-oriented paradigm, in particular: encapsulation, inheritance, and polymorphism
  • Be familiar with the application of design patterns including: immutable objects, factories, and singleton objects
  • Be familiar with best practices with regards to object equality, object cloning, and checked/unchecked exceptions
  • Be familiar with CVS, JUnit, and Javadoc
  • Be exposed to advanced SDK packages including: Swing for GUIs and network programming
  • Be exposed to exotic language features including: nested classes, nested interfaces, and annotations

Prerequisites

CSE 321: Case Studies in Component-Based Software

Course Outline

Week Topics:Language Topics:Tools Topics:Practice
1 Overview Eclipse
2 Objects, classes, interfaces
3 Javadoc, JUnit Immutability
4 Generics, Polymorphism
5 Inheritance, Exceptions Equality
6 Collections
7 Assertions, IO Factories
8 Swing CVS/SVN Logging
9 Nested classes, Type bounds MVC
10 Networking, Reflection Singleton

Textbooks

Core Java, Volume 1, by Horstmann and Cornell [required].

A summary of other, recommended, references is available at the class web site.

Not all material we cover will be from the book, nor will the order in which we cover this material be always the same as in the book. You will have to refer to copies of the slides (which I will distribute in class and on the course web site), your own notes, as well as the book in order to keep up with the course.

Class Web Site

The class web site (http://www.cse.ohio-state.edu/~rountev/421) will contain all notes, handouts, labs, a detailed schedule, pointers to reading materials, etc. Copies of lecture notes etc. handed out in class become official, regardless of whether they are on the web site or whether you are able to access the site. For up-to-date news and announcements, use Carmen instead.

Carmen

Carmen (http://carmen.osu.edu) will be used for news, announcements, discussions on various topics, and lab submission. Make it a habit to check Carmen regularly — announcements regarding labs, exams, etc. will often appear there. Whatever I post on the discussion groups is as official as everything discussed in class. Feel free to post your own questions, comments, suggestions for other students, etc. (Of course, do not post detailed solutions that can be reused by others.)

Programming Labs

General requirements: There will be 9 programming labs. The first 8 will be done individually, and the last one will be a team lab. All solutions must be submitted through Carmen. The grader will compile and run your submissions on stdlogin. Some people prefer to implement the labs on a different machine (e.g., at home), and then port them to stdlogin. If you decide to use a different machine, it is entirely your responsibility to make the code compile and run correctly on stdlogin, before the deadline.

Academic integrity: All work on the labs should be done independently, except for the joint work by the team in the last lab. General discussions of the labs with others in the class are allowed, but you have to do all work in the design, programming, and testing independently. Students are expected to submit work that is entirely their own. It is a violation of course rules to use any part of someone else's solution as one's own. This includes using code (or code fragments) from other students currently registered for the class as well as from students from previous classes. Submissions that show excessive similarities will be taken as evidence of cheating and dealt with accordingly.

Late policy:Labs should be turned in by the beginning of class on their due date. If the submission time is 1:31 pm or later on the due date, the submission will be considered to be late. Submissions will be accepted up to 24 hours late with a 25% penalty and up to 48 hours late with a 50% penalty. Submissions that are more than 48 hours late will not be accepted.

Resubmissions: If you resubmit your lab, it will override completely any previous submissions. The grading (including any late penalties) will be done only on the very last submission. If you override an old correct submission with an incorrect new one, the grader will not take into account your old submission. Resubmit at your own risk.

Exams

Exam Time/Place
Midterm Wednesday, Feb 11, BO 313
Final Wednesday, Mar 18, 1:30 pm, BO 313

Both exams will be comprehensive, in-class, closed book. Exams should be done individually, without any communication with others. To get my approval to reschedule an exam, you must email me at least one week before the exam is scheduled. I will not give such approval unless the reasons are justifiable.

Grading

Individual Labs 55 %
Team Lab 15 %
Midterm 10 %
Final 20 %

The entire course will be graded on a curve. I expect the average grade to be around B. For this reason, I will deduct points rather liberally and I will encourage the grader to do the same. Keep this in mind if you get a score that you consider to be relatively low. Of course, when grading on a curve the absolute score is not important. For exams and labs, I will give you statistics that will help you understand your standing in the class.

I will grade the midterm exam and the final exam. The grader will grade the labs. If you have any grading disputes, contact the person that did the grading (me or the grader). Grades become final one week after a lab or an exam is handed back. This should leave plenty of time to resolve any grading disputes.

Academic Integrity

I will treat you as professionals, and you should conduct yourselves as such. You are free to discuss the labs with others. However, the solutions you submit should be developed by yourself. Cheating is a very serious offense and will not be tolerated. Supplying others with materials is also against this rule. See above, under "Programming Labs", for additional details on academic integrity. You should also consult the information provided by the Office of Academic Affairs, Committee on Academic Misconduct at http://oaa.osu.edu/coam/ten-suggestions.html.

Students with Disabilities

Any student who feels he or she may need an accommodation based on the impact of a disability should contact me privately to discuss his or her specific needs. Please contact the Office of Disability Services at (614) 292-3307, or visit 150 Pomerene Hall, to coordinate reasonable accommodations for students with documented disabilities.

Religious Obligations

I will do my best to accommodate any religious obligations you may have. Please contact me privately, at least a week in advance, to work out any relevant details.