The Software Engineering Requirement Explained

 

Each Computer Science major must successfully complete at least one Software Engineering course. Software Engineering (SE) is concerned with the application of theory, knowledge and practice for effectively and efficiently building software systems that satisfy the requirements of users and customers. To allow students to select a course that matches their interests, the Computer Science Department offers in rotation three Software Engineering courses: CS 305 Database Applications Engineering, CS 350 Object Oriented Software Engineering, and CS 360 Distributed Applications Engineering.

 

The following are common features of all three:

        Producing software that is easy to modify and maintain (maintainability)

        Producing reliable software that will perform well even in situations different from its designer’s assumptions (robustness)

        Reuse of components (reusability)

 

The three courses differ in the following:

 

In CS 305 Database Applications Engineering you will take part in the development of an information system with an extensive database component. You will use tools of a higher level than in the other two SE courses. You may not need all your programming skills, but will need a good database background. You will have to learn the details of using a complex DBMS environment on the fly.

 

In CS 350 Object Oriented Software Engineering we assume that you love object oriented programming (OOP) and have a good knowledge and recent experience with one OOP language (e.g., C++ or Java or C#, to fit in a team). I recommend that before taking this course you complete at least one advanced programming elective, and if your schedule allows, the required course CS 355 Programming Languages.   In CS 350 you will most likely build a desktop application that may or may not access a database or any remote resources. You will use all your object-oriented design knowledge, and will significantly enhance it.

 

CS 360 Distributed Applications Engineering requires good OOP skills and some experience with building Web applications (at the level of CS 250 or CS 245CS110 is NOT sufficient!). If you did not enjoy the CS 250/245 prerequisite, you should consider another SE course. In CS 360 you will learn more about the specifics of distributed systems and will use a distributed systems design methodology. Recent projects include a distributed game, a fully featured e-commerce application, a client-server system built on low level communication protocols, and autonomous agents controlling robots.

 

Since these three courses are offered in rotation, you have to plan your SE experience well in advance and consider the prerequisites, to be able to take the SE course that you want. Do not hesitate to contact me early in your course of study for an advice and help with your planning.