Software Engineering

CSCI 301, Spring Semester, 2006

Instructor:    Shieu-Hong Lin

Class website:

Class time:        Tuesday           3:00-4:15PM at Metzger 100 or Grove 4B

Thursday          3:00-4:15PM at Metzger 100

Office Hours: Tuesday & Thursday 1:30-3:00 pm, Math & CS department


Course objectives: 

˛      Develop the capability of learning new technology and complete a prototype project using the technology. The class this year will focus on exploring the open-source technology. For people with interest in Microsoft .NET framework technology, programming using C# is an alternative you may pursue.

˛      Gain wide exposure to important software engineering principles in specification & requirement analysis, architectural design & analysis, the coding, inspection, testing, and debugging of software modules, and integration of modules into reliable and efficient systems.

˛      Form small teams (2 persons each) to collaborate on the projects and practice software engineering principles in an iterative and repetitive process of software engineering to produce robust software systems.

˛      Learn to be a capable and disciplined programmer who communicates with others to forge good teamwork, adopts good coding conventions in the code, and effectively utilizes the coding and debugging tools provided in modern integrated development environments.



1.     Steve McConell. Code Complete: A Practical Handbook of Software Constrcution 2nd Ed., 2005.  (Recommended for software engineering common sense)

2.     Ian Sommerville. Software Engineering 7th ed, Addison Wesley, 2004. (Recommended for general software engineering subjects. With online case studies)

3.     Luke Welling, Laura Thomson. PHP and MySQL Web Development 3nd ed. SAMS, 2005.  (Recommended for web programming using PHP and MySQL)

4.     Cristian Darie and Mihai Bucica. PHP 5 and MySQL E-Commerce: From Novice to Professional. Apress, 2005. (Recommended for E-Commerce using Smarty, PHP, MySQL. With online demo site and code)

5.     Cristian Darie and Mihai Bucica. Beginning ASP .NET 2.0 E-Commerce in C# 2005: From Novice to Professional. Apress, 2005. (Recommended for E-Commerce using C# and ASP.NET. With online demo site and code)

6.     J. Blanchette and M. Summerfield. C++ GUI: Programming with QT3, Prentice Hall, 2004. (Recommended for C++ GUI programming)

7.     Dave Thomas. etc. Programming Ruby: The Pragmatic Programmers' Guide, 2nd Ed.Pragmatic Bookshelf, 2004.

8.     Dave Thomas. etc. Agile Web Development with Rails : A Pragmatic Guide,  Pragmatic Bookshelf, 2005.

9.     Steve McConell. Rapid Development, Microsoft Press, 1996. 

10. Martin Fowler. Ractoring: Improving the Design of Existing Code, Addison Wesley, 2000.

11. E. Gamma. . Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.  (The classic book on design patterns)

12. Martin Fowler. endall Scott. UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3rd ed. Addison-Wesley, 2003.

13. Gunther Lenz. homas Moeller. .NET-A Complete Development Cycle, Addison-Wesley, 2003.

14. Jesse Liberty. Programming C#. 3rd Ed. O’Reilly 2003.



˛      Weekly reading assignments &                         

Weekly project activities reports                                 15%           

˛      Class attendance & participation                                10%

˛      Quizzes & practice programming assignments            35%           

˛      Midterm project examination                                      20%

˛      Final project examination                                           20%



Tentative project schedule


˛      Week 1            Overview of the course project

˛      Week 2            Specification & requirement analysis

˛      Week 3            Prototype design: modules and their interaction      

˛      Week 4            Detailed specification of modules

˛      Week 5            Coding & debugging      

˛      Week 6             Coding & debugging                

˛      Week 7            More coding, debugging, and testing  

˛      Week 8            Peer Review: Inspection and testing    


˛      Week 9            Midterm project demonstration & inspection: public



˛      Week 10          Architectural revision and reuse of existing modules

˛      Week 11           Specifying details of reuse, revision, and new modules

˛      Week 12          Coding & debugging                

˛      Week 13          Coding & debugging                

˛      Week 14          More coding, debugging, and testing                     

˛      Week 15          Peer Review: Inspection and testing             


˛      Final Week       Final project demonstration & inspection: public