|
|
Fatih University, Computer Engineering
Department
Fall Semester
2005
CENG 217: Monday
15:00 - 17:00 (E210),
Tuesday 15:00 - 16:00 E-210
BILM 217: Monday
13:00 - 14:00 (E303),
Tuesday 12:00 - 14:00 E-303 |
|
Instructor: Halûk
Gümüşkaya |
Teaching Assistant:
Melek Oktay |
Office:
EA301 |
Office: |
Office hours:
Mon 14-15,
Tue 14-15, Thur 15-16 |
Office hours: |
Office phone:
0.212.889 0810-1036 |
Office phone:
1027 |
e-mail: haluk@fatih.edu.tr |
e-mail:
moktay@fatih.edu.tr |
|
|
Mostly
Static Information: |
Mostly
Dynamic Information: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Course Description
Catalog Description:
Classes, objects, inheritance, polymorphism, graphical user interfaces,
event handling, exception handling, files and streams, multithreading. UML
diagrams: Class, object, use-case, sequence and activity diagrams.
Introduction to GoF design patterns. Software design using UML and design
patterns.
Details
Short:
The realization of these
concepts is examined using
design patterns,
UML and
Java. Students are expected
to complete and report programming
assignments and a nontrivial project developed in Java.
Long: CENG/BILM 217 teaches mainly large-scale Object Oriented
Programming (OOP) using Java.
"Object-Oriented Programming is a method of
implementation in which programs are organized as cooperative collections of
objects, each of which represents an instance of some class, and whose
classes are all members of a hierarchy of classes united via inheritance
relationships." (Grady Booch)
The course concentrates on OOP design, both in
the internal structure of its projects and in the large pre-built OOP
libraries they are built on. The course features individual homework
projects exercising OOP techniques and culminating in a large final team
project. The course has several related themes...
|
Java and OOP
programming. We cover advanced parts of the Java language, and
explore OOP design principles. Within OOP, we emphasize modular design
for large projects, unit testing, and inheritance. |
|
Concepts and skills for OOP/GUI libraries. OOP libraries for
Graphical User Interfaces (GUIs) are probably the best application of
OOP yet devised, so it's natural for CENG/BILM 217 to use OOP/GUI
libraries to make its points. The course explores the design of OOP/GUI
systems and how to use them. |
|
Programming in an OOP library environment. The real work in an OOP
system is orchestrating the behavior of the off-the-shelf library
objects. In that context, the most interesting skill is operating within
any large body of off the shelf OOP code. Using such libraries requires
different skills from the classic from-scratch-design-code-debug cycle.
CENG/BILM 217 exercises the research and coding skills necessary to work
effectively within large OOP systems. |
|
Introduction to
Object-Oriented Analysis and Design. We introduce the basics of OO
analysis and design using UML and design patterns in this course.
Analysis, design and team development topics are covered in detail in
CENG 302
Software Engineering. |
|
Introduction to UML and Design Patterns. This course makes an
introduction to UML and design patterns. The UML is a graphical language
for visualizing, specifying, constructing, and documenting the artifacts
of a software-intensive system. We will also learn and use some of the
well established design practices that recur in many non-trivial
software systems. These techniques are referred to as design patterns.
This course teaches the situations and
motivations that call for using a wide range of design patterns.
|
|
Team
programming on a large project with a significant deadline. CENG/BILM
217 gives exposure to some real world programming issues on the final
project. The final project will take up about the last 8 weeks
of the semester. The goal of the final project will be to use the OOP/GUI
system to produce a complete GUI program. The final project will
exercise skills in OOP design and testing, team programming, project
scheduling, interface design, and completing a large project under a
serious deadline. |
At the end of the course, you
will understand how to construct a significant, fully functional GUI
application from scratch as well as having gained general experience with
advanced Java programming, OOP design, some UML and design patterns, unit testing,
and the use of large OOP libraries.
Many course materials and related links will be
available online at our course web page.
If you are looking for anything course related, look on the course web page
first. In particular, the
Course Materials/Lecture Announcements and
References and Readings pages should be frequently visited during the
semester.
Prerequisites
CENG 102
Computer Programming II (Introduction to Java and fundamentals of
object oriented programming).
Lecture Schedule
Week |
Topics Covered |
HW |
1-2 |
Course Overview,
Java Refresher: Java basics, Exception Handling, Files and Streams |
HW1 |
3 |
Object
Oriented Design Process: Identifying classes and methods,
relationships between classes, CRC cards, Introduction to UML and basic
diagrams (class, sequence and state diagrams), case study |
|
4 |
Guidelines
for Class Design: Designing and implementing the interface of a
class, programming by contract |
HW2 |
5 |
Interface
types and Polymorphism: User interface types, anonymous classes,
polymorphism |
|
6 |
Patterns
and GUI Programming: Introduction to design patterns, iterator,
observer, strategy, composite, and decorator patterns |
HW3 |
7 |
Inheritance and Abstract Classes: Defining and implementing
subclasses, abstract classes, inheritance hierarchies of classes |
HW4 |
8 |
Java Object
Model: Java type system, primitive types, wrappers, and array types,
type inquiry and reflection, Object equility and cloning, Serialization,
Components and JavaBeans |
|
9 |
Frameworks:
Framework concept, applets, collections, application, and graph editor
frameworks |
HW5 |
10 |
Multithreading: Threads and Runnable interface type, Thread
synchronization |
HW6 |
11 |
More
Design Patterns: Adapter, command, factory method, proxy, singleton,
visitor, and other design patterns |
HW7 |
12-13 |
Case
Studies: Object-oriented analysis, design and implementation of
complex programming examples |
Project |
14 |
Work on Projects and
Demonstrations |
|
Textbooks
Required
|
Object Oriented Design
and Patterns (OODP), 2nd Edition, Cay Horstmann, John Wiley, ISBN:
0-471-74487-5, 2005. |
|
Java How to Program
(JHTP), H. M.
Deitel, P. J. Deitel, Prentice Hall,
6th Edition, 2005.
(Last year's text book). |
Recommended
|
Objects First with Java, A Practical
Introduction Using BlueJ, 2nd Edition, D. J. Barnes, M. Kölling,
Prentice Hall, 2005. |
|
Object-Oriented
Software Development Using Java, Principles, Patterns, and Frameworks,
2nd Edition, X. Jia, Addison Wesley, 2003. |
|
Java Software
Solutions, 4th Edition, Lewis & Loftus, Addison-Wesley, 2005.
|
|
Thinking in Java,
Bruce Eckel. Lots
of Java coverage in one free online book. |
|
Core Java Vol 1(basic) & Vol 2
(advanced), by Horstmann. These volumes give a good, standard coverage
of Java. |
|
Sun's Official Java
Tutorial |
|
UML Distilled, 3rd edition,
Martin Fowler, Addison-Wesley, 2004. |
|
UML for Java Programmers,
Robert C. Martin, Prentice Hall, 2003. |
|
Applying
UML and Patterns - An Introduction to Object-Oriented Analysis and
Design and Iterative Development, C. Larman, Prentice Hall, 2004. |
Tools and Development Environments
|
Together Architect for Eclipse 2006 (our main modeling and
implementation tool, it includes Eclipse 3.1) |
|
Eclipse
(Eclipse
Tutorials) (Java development
platform) |
|
JBuilder (JBuilder is maybe less
important now since there are open source alternatives) |
|
BlueJ (for teaching basic object
oritented programming concepts) |
|
Together Plug in for Eclipse
(UML tool for
visualization, modeling, construction and documentation
of software artifacts)
|
|
Omondo Plug in for Eclipse
(UML tool) |
Grading
(Tentative)
5 % :
Quizzes
20 % : Homework
Assignments
30 % :
Team
Project
20 % : Midterm
25 % : Final Exam (a
comprehensive exam at the end of the course)
Attendance: Attendance
is important in order to learn the topics in a timely manner. Attendance
will be forced by taking attendance and and by making quizzes at random
times.
Quizzes: There will short quizzes at
random times. I may not inform you about the quizzes. A quiz may be done at
any time during a lecture period. The quizzes will be open-book short exams.
Homework:
There will be homework
in every 2 weeks.
The purpose of the homework is to give you a chance to exercise the
knowledge gained from the recent class material.
Team Project: The team project is very
important for a course of this kind. The project will be completed in the
last 8 weeks of the semester. The project is a large, team project
that brings together and exercises all of the material from the beginning of
the course. The project is programmed in teams of 3-5 students.
Paperless Submission: We will use
electronic submission methods for all the programming assignments, and all
the grading feedback will be electronic as well.
Midterm Exams: There will
be one midterm exam.
Final Exam: There will
be one final exam that will be given during final exams period of the
semester.
Makeup Exam:
Depending on the need (for officially reported or extraordinary cases) I may
make a makeup exam. But I should warn you that makeup exam will be much more
difficult than the other exams in order to provide fairness for students who
work on time and take the exam on time, and discourage students from unnecessarily omitting the
exams.
Honor Code: You are free to discuss
ideas and problem approaches with others, but all the work you hand in
should be your own creation (or the creation of your team for a team
project). In particular, sharing or copying code is not OK. There are
tools we may use that do an extremely aggressive job of finding little
sections plagiarism within the submissions. The plagiarism tools are
shockingly good at finding issues, and of course doing your own work is the
only way to really learn the material anyway. If a student is in a bad
situation, they should come and talk things over with me.
If you feel a particular bit of collaboration may have crossed the line,
just clearly cite what help you got and from whom in your project's Readme.
You can never get in Honor Code trouble if the help is clearly credited.
If we are using the Foo module, and you find the key 8 lines in the docs or
in a book or on the Internet that describe how to call the Foo module best,
it's fine to use those lines without comment in your Readme. OOP programming
is filled with episodes like that. If I have asked you to implement the Bar
module, copying the 200 lines you found that implements Bar is not ok.
Academic Integrity
We will be very careful in
grading the projects, homeworks,
exams so that everybody
gets the grade that he/she deserves. Copying will not be tolerated and will be checked and punished rigorously.
The Fatih
University has a very strict policy on
academic dishonesty. All work on homeworks and
examinations must be strictly individual. Violations of this policy will
result in an F grade for the class and may result in suspension/expulsion
from the university.
You must do all of the homework
assignments for grading individually (and the exams, of course).
In preparing the solutions for assignments, you may consult with
other students, the teaching assistants and myself regarding the general
method of solutions. However, the final submission handed in for grading
must be your own work. Copying the solutions of others is expressly
forbidden. Allowing others to copy your solutions is expressly forbidden.
Penalties for violation of this will range from a grade of zero on
the assignment, a reduced grade for the semester, to a grade of F for the
course, and a letter to the Office of the Dean.
|