Software Engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software that is, the application of engineering to software. Therefore, developing and maintaining reliable and efficient software systems is the primary concern to software engineering professionals. Software systems should be affordable to develop and maintain and satisfy all the requirements that customers have defined. More recently, it has evolved in response to factors such as the growing impact of large and expensive software systems in a wide range of situations and the increased importance of software in safety-critical applications. Software engineering is different in character from other engineering disciplines due to both the intangible nature of software and the discontinuous nature of software operation. It seeks to integrate the principles of mathematics and computer science with the engineering practices developed for tangible, physical artifacts. Degree programs in computer science and in software engineering have many courses in common. Software engineering students learn more about software reliability and maintenance and focus more on techniques for developing and maintaining software that is correct from its inception. While CS students are likely to have heard of the importance of such techniques, the engineering knowledge and experience provided in SE programs go beyond what CS programs can provide. The importance of this fact is so great that students of SE should participate in the development of software to be used in earnest by others. SE students learn how to assess customer needs and develop usable software that meets those needs. Knowing how to provide genuinely useful and usable software is of paramount importance.

Semester 1    Semester 2    Semester 3    Semester 4    Semester 5    Semester 6    Semester 7    Semester 8   

Semester #1
CodeTitlePrequisitesCourse Material
BA101 Calculus 1 None
BA113 Physics None Course material
CS111 Introduction to Computers None Course material
IS171 Introduction to Information systems None Course material
LH135 English For Specific Purposes I None
NC172 Fundamentals of Business None

Semester #2
CodeTitlePrequisitesCourse Material
BA102 Calculus 2 BA101 Course material
CS143 Introduction to Problem Solving and Programming CS111 Course material
EC134 Fundamentals of Electronics BA113 Course material
GM311 Introduction to Multimedia CS111
LH136 English For Specific Purposes II LH135
NC133 Communication Skills LH135

Semester #3
CodeTitlePrequisitesCourse Material
BA201 Calculus III BA102 Course material
BA203 Probability and Statistics BA102
BA216 Advanced Physics BA113
CE216 Digital Logic Design CS111
CS202 Discrete Structures CS111 Course material
CS243 Object Oriented Programming CS143 Course material

Semester #4
CodeTitlePrequisitesCourse Material
CE231 Introduction to Networks CS143
CE243 Intro. to Computer Architecture CE216
CS212 Data Structures and Algorithms CS243 Course material
CS244 Advanced Programming Applications CS243 Course material
IS273 Database Systems CS143 Course material
IT321 Professional Training in Programming I (.Net 1) None
SE291 Introduction to Software Engineering CS243, IS171 Course material

Semester #5
CodeTitlePrequisitesCourse Material
BA304 Linear Algebra BA102
CS311 Theory of Computation CS202 Course material
CS333 Web Programming IS273 Course material
IT322 Professional Training in Programming II (.Net 2) IT321
SE391 Project Management SE291 Course material
SE392 Software Requirements and Specifications SE291

Semester #6
CodeTitlePrequisitesCourse Material
CS312 Computing Algorithms CS212 Course material
CS322 Operating Systems CS212, CE243 Course material
CS366 Introduction to Artificial Intelligence CS212, CS202 Course material
CS451 Human Computer Interaction SE291 Course material
SE393 Principles of Software Architecture SE291 Course material

Semester #7
CodeTitlePrequisitesCourse Material
CS481 Computers & Society 96CR+
SE401 Project 1 GPA=2 & 96CR or more
SE491 Software Component Design SE291

Semester #8
CodeTitlePrequisitesCourse Material
CS421 Computer System Security CS322, CE231 Course material
SE402 Project 2 SE401
SE492 Software Verification SE291 Course material


Elective courses
CodeTitlePrequisites
CS427Embedded Systems Programming CS143, CE243
CS428Cloud Computing CS322, CE231
SE493Software Quality Assurance SE291
SE494Formal Methods in Software Engineering SE291


Elective courses
CS301Numerical Methods BA304, CS143
CS305System Modeling and Simulation CS212
CS311Theory of Computation CS202
CS321Systems Programming CS243, CE243
CS352Computer Graphics CS212
CS443Game Programming CS243, CS352
CS445Structure of Programming Languages CS311, CS321