SE 423: Software Construction and Processes

Class Program
Credits 3 Lab Hours 0 Lecture Hours 3
Tutoring Hours
0

This course introduces principles and techniques to develop software such that it is more maintainable and evolvable. This implies that the developed software is traceable, easy to understand, and ready for change. Such qualities are necessary for all software which will have a considerable lifespan and would have additions/changes in their functionality during their lifetimes. The course will discuss the most common design patterns which help in making a software more robust. 

Software reengineering will also be introduced since many of the largest software systems are successors of existing systems and in the absence of clear documentation, most of the time, functional details and design choices have to be extracted from existing code.  

The course will also introduce the concept of functional programming, its differences with imperative programming languages, its uses  and its pitfalls. Understanding of functional programming will help students explore a new programming paradigm and broaden their horizon

Corequisites

None