CSE 2102 Algorithms in Bioinformatics
- Spring 2009
235 ITEB, email@example.com
Office hours: 11-12 pm, Tuesday and Thursday or by
Please read carefully.
This course is an introduction to software engineering. I will cover
topics (on, e.g. formal specification using Petri net and Z) and practical topics
(such as advanced object oriented design and design patterns). The goal
present an overall
introduction to the techiniques and principles that are important
to develop quality
I hope at the end of the course, you will understand that software
is not only about programming, and learn some techniques to develop
This course is lecture-based. Several homeworks will be assigned on
subjects covered in the class. One of the most important part of the
course is the
course project, where the students will work in teams with two or three
on some relatively large software tasks.
This course covers the three central
subjects of software engineering.
In particular, the planned
1) Basic concepts of software engineering, and processes that software
are developed in practice.
2) Design, especially objected oriented design. Design patterns, why
are important, how they are used in commercial products,
and how to apply design patterns in your projects.
3) Specification. Finite state machines. Petri nets. Algebraic
Case study of application of formal specification.
4) Verification. Techniques for testing. Basics of program analysis.
5) Processes. How are software products developed in the industry?
6) Other subjects, including management isssues, tools, such as
UML. State-of-art bug finding.
Prerequisites. CSE 1102. I expect
to know basic Java programming. Ideally,
you also know basics of C and C++ since the design pattern book (below)
on C++, but this is not required.
TA: Derak Doran,
The following textbook is required.
of software engineering, second edition, by Ghezzi, Jazayeri and
Also, the following book is very useful
to this course and we
will go over a large part of this book
to learn OO-design in the first half of the course:
patterns: elements of reusable objected-oriented software,
E. Gamma, et al.
I highly recommend this book. Consider purchasing a copy if you really
learn objected-oriented design.
Homework/quiz. A few written
homeworks will be assigned to help you better understand the
class materials and prepare for exams. We will also have quiz from time
You will work in a small group to develop a software of moderate size.
You will need to
work with your team members to decide roles for the group members. You
submit documents on your project at several milestones. For this
semester, the plan is to
develop a web-based Checkers game system. You will gain experience in
real-world OO-based software in a team-oriented settings. You will also
software tools like
We will have one mid-term and one final exam.
Grading. The grade will be
homework and quiz (10%), project reports and demo (40%), and exams