Fundamentals of Software Engineering

Department of Computer Science
University of Houston
Houston, TX 77204

Send email to Dr. Venkat Subramaniam

Why do so many software projects fail? Why do some succeed? What are the problems faced in software development? We are not interested in the code specifically in this course. Our focus is on issue in planning, designing, and delivering the project. We will look at how we can improve the "process" of software development. We discuss conventional approaches, pragmatic approaches and things that will help us better our efforts to realize that one goal - to deliver on time and within budget.

This course will address several issues in Software Development including the following:

  1. Process
    • What's software development process?
    • Methodologies?
    • Traditional and pragmatic approaches?
  2. Managing Risk
    • How to address risk?
    • What goes wrong and how to take control?
  3. Software Testing
    • Types of tests
    • Testing approaches and tools
  4. Iterative and incremental development
    • Agile practices
    • Agile methodologies, XP, Scrum

Pre-requisite: COSC 1320, COSC 2320 and MATH 3336 are pre-requisites for this course. Knowledge of Object Paradigm fundamentals and C++, Java, or C# required.

Assignments and Group Projects:

There will be two midterms. Assignments will be provided on the course material. In addition, each student will work on a group project to solve different problems. Each group will come up with several solutions and write reports comparing them. Final implementation of the group project will be in C++, Java or C#.

(Now that you have read through all this - all this subject to change!)