COMP 261 - Object Oriented Programming
Course Syllabus
Istanbul Bilgi University, Department of Computer Science, 2008-2009 Fall
Description
The course aims to teach students writing programs in object oriented style, and designing classes and their interactions. We adopt an objects first approach with design recipes which, instead of making objects the subject of iterative manipulation, takes object design and interaction to the center of programming paradigm. In addition to essential techniques which are not specific to choice of programming language, the course also covers intermediate and advanced techniques such as polymorphism and object persistence. The course is suitable for both CS majors and non-majors. It assumes that student has been introduced to the basic principles of program design.
Prerequisites
A solid background of program design is highly recommended for students who are interested in taking this course. Therefore it is required that student who registers for this course have passed either COMP 152 and COMP 112, or COMP 149 courses with a successfull grade.
Course Information-
Instructor
- Mehmet Gençer
Home page: http://cs.bilgi.edu.tr/~mgencer/
Office: Dolapdere 321
Phone:0212-3115412
E-mail: mgencer@cs.bilgi.edu.tr
- Course website
- http://cs.bilgi.edu.tr/pages/courses/year_2/comp_261/
- Online facilities
-
There are two mailing lists for the course: comp-261-announce is used for announcements from the lecturers, and comp-261-discuss is available for course related discussions. The mailing lists can be accessed at
http://cs.bilgi.edu.tr/mailman/listinfo/.
Objectives
Although this is not an introductory course on programming, for most students, it is a first course in our curriculum which uses a typed and iterative style language. For this reason while it buils upon basic knowledge of implementing computational constructs and focuses on object oriented approach, some other programming language concepts such as types and references are addressed along the way. In addition some software engineering related practices such as team programming and software documentation are introduced in classwork design. Upon completion of this course students should be able to:
-
Understand object data and behavior in a model-contrel-view perspective. Construct classes using Java programming language using programming tools such as DrScheme/ProfessorJ and Eclipse.
- Understand references and variants of their employment (mutual, self references, etc.), and apply in their class implementations.
- Understand class inheritence and construct class hierarchies for practical problems.
- Understand inheritence and types and apply in constructing class hierarchies.
- Understand persistence problems and facilitate tools and mechanisms for their solution.
- Demonstrate literate programming, self documentation, and other practices suitable for team programming efforts. Apply program design and testing practices.
Resources
The book “How to Design Classes” by Matthias Felleisen et.al. is highly recommended to all students taking the course. Additional online or printed resources will be provided or referred to during course.
Topics Outline-
Orientations in programming and its results for programming languages. Objects as combination of state (data) and behavior. Object environments and basis of design patterns.
Typed languages, dynamic and static typing.
Java features and using the compiler and interpreter. Creating simple programs using variables and methods.
- Class syntax in Java. Public and private components. Class elements versus object elements. Constructors and destructors.
References to self in objects.
Literate programming practices and self-documentation facilities of Java. Compiler and runtime errors.
Essential Java statements for conditionals and iterations. Java standard libraries and input/output.
- References versus values. Managing relations of objects.
Modeling environments as the world the objects live in.
Using lists and arrays in Java.
- Inheritence, method and variable resolution and overriding in class unions. Subsumption of types. Reuse and modularity issues in software development.
Polymorphism and its absence in Java.
- Use interfaces to overcome limitations of lack of polymorphism. Use of interface design in software engineering practice.
- Dealing with errors. Error and exception mechanisms. Catching and throwing exceptions.
- Creating user interfaces to Java software. MVC paradigm. Creating simple applets.
- Persist and restore objects across different runs of a program.
- Implement advanced data structures such as trees using classes.
- Implement classes using circular references to represent many-to-many relations.
- Implement packages in Java. Larger scale development practices, code organization and reuse.
- Class hierarchies as a design matter. Criteria for choosing among various designs.
Assessment
Students will be graded based on assessment and self-assessment of the protfolios they build throughout the course. You will be given frequent project assignments during the course. The assignments have two purposes. First is to put what you have learned in the lectures or during self study into work and get proficient in applying the techniques you have learned. Second purpose is to demonstrate that you can do these things. Projects should be both submitted in printed form in due time and also you must keep electronic copies until the end of the term. Assignments should be submitted via the online system. Please consult your instructors for details of how to do this. In order to fulfill the two purposes mentioned above, following criteria shall be applied for evaluation of projects:
-
Correctness: Whether a submitted project satisfies the requirements of the assignment. In other words whether the program works correctly, the digital system design comprises a working system, the logic proof is correct. It is to your advantage to work together with your classmates to check correctness of one another’s solutions, and seek help or start with easier problems when you are unable to solve assigned problems.
- Timeliness: Late submissions will not be accepted.
- Style: Your projects should not only be correct, but they should also convey your solution well. Therefore you are expected to be expressive and demonstrate good language skills when writing down your projects. This includes following coding conventions and using expressive comments when writing computer programs, in accordance with literate programming practices.
- Originality: There is always more than one way to solve problems. A way of solving problems you have seen in the lectures may not be the best way to solve another problem. Designing logic circuits or programs is a creative task and we do expect you to seek alternative, novel ways of solving problems. Therefore you must try to come up with solutions that are original and different, in addition to being correct.
- Cooperation: In most real tasks you will be working with other computer scientists. We consider development of your abilities to share work and complete tasks as a team as an essential part of your progress. Some of your assignments will be group projects and your partners’ experience about working with you will be a part of your performance evaluation.
While in most cases you will be your own judge or cooperate with your classmates to evaluate one another, you will be asked during the lectures to present your solutions to assigned problems. As this will be the major change of your lecturers to judge your proficiency on course subject, you are advised to come to lectures well prepared.
In addition to project assignments, there will be several quizzes for this course; and grades you take from these exams will provide a double check of your performance. Content and difficulty of quizzes will not be substantially different from the assignments and will not require additional work on your part other than working towards your assignments. Your final grade for the course will be a weighted sum of your grade from projects (60%), and your quizzes average (40%). In order to help you monitor your progress during the course you will be asked to evaluate your overall progress midway through the semester and discuss with your lecturers the ways to improve your performance. At the end of the semester you will be asked to write an overall evaluation and grade your performance on the course. Although your lecturers will have the final say on your grades, these practices are proven to be extremely useful for self-diagnosis of your problems and for taking timely action to improve your performance.
This document was translated from LATEX by
HEVEA.
|