CSE 2102 Algorithms in Bioinformatics - Fall 2010

Yufeng Wu
235 ITEB, ywu@engr.uconn.edu
Office hours: 2-3 pm, ITEB 235, Monday and Wednesday or by appointment.

Please read carefully.

This course is an introduction to software engineering. I will cover both theoretical
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 is to
present an overall introduction to the techiniques and principles that are important
to develop quality software products. I hope at the end of the course,
you will understand that software engineering is not only about programming,
and learn some techniques to develop quality software products.

This course is lecture-based. Several homeworks will be assigned on major
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 people
on some relatively large software tasks.

This course covers the three central subjects of software engineering.
In particular, the planned subjects are:

1) Basic concepts of software engineering.

2) Design, especially objected oriented design. Design patterns, why design patterns
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 specification.
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.

Prerequisites. CSE 1102. I expect you to know basic Java programming. Ideally,
you also know basics of C and C++ since the design pattern book (below) is based
on C++, but this is not required.


Textbook: The following textbook is required.

Fundamental of software engineering, second edition, by Ghezzi, Jazayeri and Mandrioli, 2003.

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:

Design patterns: elements of reusable objected-oriented software
, by E. Gamma, et al.
I highly recommend this book. Consider purchasing a copy if you really want to
learn objected-oriented design.

Homework/quiz.  Several written homeworks will be assigned to help you better understand the
class materials and prepare for exams. We may also have quiz sometimes.

Projects.  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 need to
submit documents on your project at several milestones.  For this semester, the plan is to
develop a 2D animation editor. You will gain experience in developing real-world OO-based
software in a team-oriented settings. You will also learn software tools like version control.
I will post more details on the project in a separate handout.

Exams. We will have one mid-term and the final exam.

Grading. The grade will be assigned by: 
homework and quiz (10%), project (40%), and exams (mid-term 20%, final 30%).