BACHELOR OF ENGINEERING IN SOFTWARE ENGINEERING

This program, which is one of the ICT programs, has a slightly different set of core courses. Only four of the Engineering core courses are taken by students in this program and Telecom and Network Systems students (ENG 210, ENG 220, ENG 310, ENG 320) which are described above.

 

Core Courses ( 44 credits)

ENG 210 Engineering Mathematics I
ENG 220 Engineering Probability & Statistics
ENG 310 Engineering Mathematics II
ENG 320 Programming (C, C++)
ICT 210 Discrete Mathematics
ICT 215 Fundamentals of Information Technology
ICT 220 Computer Architecture
ICT 225 Information Systems
ICT 410 Network Security
ICT 415 Data base management system
ICT 420 Information and coding theory

 

ICT 210: Discrete Mathematics

This course introduces the study of finite systems as an increasingly important concept in the computer age and a founding pillar in information technology. The digital computer is basically a finite structure, and many of its properties can be understood and interpreted within the frame work of Finite Mathematical Systems. The course covers formal mathematical objects like Sets, Graphs, Matrices, recurrence relations and examines how these objects arise in computer science- related problems.

 

ICT 215: Fundamentals of Information Technology

This course introduces students to the technologies that are fundamental in the gathering, processing, representation and storage of information. Based on the fact that students have been interacting with some of these technologies in their everyday activities, the course paints a formal picture of the concepts of Data, Information, Hardware (Input and Output), Software and Networks. Practical aspects will be on modern information representation technologies (HTML).

 

ICT 220: Computer Architecture

This course introduces the micro components that are interconnected for the functioning of a computer system. Very little emphasis is placed on the physics and electronics involved. The course covers the functioning of logic gates and combinational circuits and how they are used to implement Boolean functions which can be analyzed with truth tables and K-maps. Introductory notions in sequential circuits, timing diagrams and the design of registers and state diagrams are equally covered.  Additional topics may include in a descriptive manner, the interconnections between combinational circuits (ALU, controllers, etc) sequential circuits (Registers, RAM, ROM, etc), Buses (data, address and control) and peripheral devices in a computer system. It equally introduces assembly programming using basic commands only

 

ICT 225: Information Systems

This course introduces the concepts of information systems as used in businesses and covers areas like definition, classification, components of a computer-based Information Systems, the place and role of Information Systems in various management structures and at various levels of management as well as analysis of IS. Introduction to database concepts are equally covered. Students will practice working with ISs and be able to perform simple create, read, update and delete operations on computer-based information systems.

Furthermore, this course teaches students how to design, construct, test, and debug databases using an Integrated Development Environment (IDE). Emphasis is on the design of databases that meet the needs of its users as well as the methodology used.

 

 

ICT 410: Network Security

The course covers theory and practice of computer security, focusing in particular on the security aspects of the web and Internet. It surveys cryptographic tools used to provide security, such as shared key encryption (DES, 3DES, RC-4/5/6, etc.); public key encryption, key exchange, and digital signature (Diffie-Hellmann, RSA, DSS, etc.). It then reviews how these tools are utilized in the internet protocols and applications such as SSL/TLS, IPSEC, Kerberos, PGP, S/MIME, SET, and others (including wireless). System security issues, such as viruses, intrusion, and firewalls, will also be covered.

 

ICT 415: Data base management system

Database Management Systems will concentrate on the principles, design, implementation and applications of database management systems. The aim is to let students: understand the different issues involved in the design and implementation of a database system; To study the physical and logical database designs, database modeling, relational, hierarchical, and network models; To understand and use data manipulation language to query, update, and manage a database; To develop an understanding of essential DBMS concepts such as: database security,

integrity, concurrency, distributed database, and intelligent database, Client/Server

(Database Server), Data Warehousing; To design and build a simple database system and demonstrate competence with the fundamental tasks involved with modeling, designing, and implementing a DBMS.

 

ICT 420: Information and coding theory

This is intended to be a straightforward and accessible course on information theory. Information theory is the mathematical theory that deals with the fundamental aspects of communication systems. As such, its primary goal is not to deliver practical solutions to communications problems, but rather to answer the question whether encoding and decoding schemes exist or not for a given combination of a source model and a channel model. The two main outcomes of single-user information theory are that any source requires a minimum description rate to represent its output faithfully (source coding theorem) and that any channel is characterized by a maximum transmission rate above which the probability of error cannot be made arbitrarily small (channel coding theorem). The purpose of this course is to develop the fundamental ideas of information theory and to indicate where and how the theory can be applied.

 

Concentration Courses (36 credits)

SWE 310 Computer programming 1
SWE 315 Introduction to Unix
SWE 320 Object Oriented Programming
SWE 325 Web Technologies
SWE 330 Systems Programming
SWE 335 Software Engineering
SWE 410 Mobile Device Programming
SWE 498 Research Project
SWE 450 Design Project

 

Practicum Courses (32 credits)

ICT 213 Operating Systems
SWE 313 Computer programming II
SWE 323 Programming in java
SWE 413 Advanced Database management system
SWE 423 Advanced Data Structures and Algorithms
SWE 433 Entrepreneurial project
SWE 233 Internship I
SWE 333 Internship II

 

 

SWE 310: Computer programming 1

This course introduces students to the area of computer programming, taking into consideration the fact that this might be the first course on computer programming that the student is encountering in his / her educational career. Emphasis shall be placed on algorithmic thinking, algorithm representation and introduction to a specific programming language.

 

SWE 315: Introduction to Unix

This course covers UNIX file and operating system. It equally covers an understanding of multi-user and multitasking concepts. Editors, X-windows, Awk, email, Internet commands, shell commands and shell scriptsare also treated in this course. Projects, which provide practical experience, are completed as part of the homework requirements.

 

SWE 320: Object Oriented Programming

This course introduces students to the object oriented programming paradigm and concepts such as classes, objects, methods, interfaces, packages, inheritance, encapsulation, and polymorphism. Emphasis is on the application of these concepts to practical problems. A prerequisite for this course will be a D+ in the Computer programming II course.

 

SWE 325: Web Technologies

This course covers the technologies that are involved in the representation of information on the web. Technologies such as Hyper Text Mark-up Language (HTML), Cascade Style Sheet (CSS),  JavaScript for client-side scripting and a server-side scripting programming language such as PHP will be covered from a practical perspective.

 

SWE 330: Systems Programming

This course trains students on the issues involved in developing system-dependent applications. Topics such as file manipulations, working with vendor and third party programmers’ libraries (static and dynamic), programming for specific hardware, device driver and network programming are treated within this course. The course is project based.

 

SWE 335: Software Engineering

This course provides an academic backing to software engineering concepts which students would have exploited during the work experience course. The course delves into questions like: Why do so many software projects fail? What are the leading software development technical and management practices? What can be done to extract maximum value from technical reviews? Etc. It covers the traditional phases of software engineering such as: specification, requirement, design, implementation, verification and validation, documentation and packaging.

 

SWE 410: Mobile Device Programming

The course aims at giving students the tools to design and develop mobile apps, and publishes them online mobile application stores. It provides an introduction to mobile phone and tablet development in general, and a good understanding of the Android, the iOS or the windows platform in particular; and also the concept of hybrid apps. The diverse resource constrained hardware environments, the large number of software platforms, and quickly changing APIs are among the features that make mobile development challenging and rewarding. Therefore, topics such as file manipulations, interaction with programmable features of a mobile device, working with vendor and third party programmers’ libraries (static and dynamic) and interfacing with mobile device are treated within this course. The course is project based.

SWE 498: Software engineering Research Project

In this course the undergraduate honors research projects will be supervised by faculty members. This project should be sustaining and could be developed in a business venture. Each student will write an independent and innovative research work, which will be supervised by a faculty member. Each student will be expected to do an independent research work and write a project which will be supervised by a faculty member. It should be well noted that, at least 90% of this project will be done by the student involved and it must be unique and innovative.

 

SWE 450: Software Engineering Design Project

Application for independent study approved by the instructor and the ICT Coordinator. Independent study or research under the direction of a full-time faculty member.

ICT 213: Operating Systems

This course covers the various generations of operating systems software as well as future trends in operating systems. It equally covers the boot process of a computer and the how the operating system executes its functions after boot-up. Students will practice how to install and exploit different operating systems (Disk partitioning and management of Software installations; System backup and recovery; Systems upgrade). This course is treated as a practical course.

 

SWE 313: Computer programming II

This course is a follow up of the computer programming I course. It deepens the student’s knowledge in computer programming through rigorous exercises / mini projects and covers topics like data types, data structures, programmer-defined data types, pointer, dynamic data structures and memory management from a programming perspective. A prerequisite for this course will be a D+ in computer programming I.

 

SWE 323: Programming in java

This course introduces computer programming using the JAVA programming language with object-oriented programming principles. Emphasis is placed on event-driven programming methods, including creating and manipulating objects, classes, and using object-oriented tools such as the class debugger.

 

SWE 413: Advanced Database management system

Advanced Database Management Systems course deals with the usage as well as concepts of design and architecture of databases. In covering the concepts, theorems, algorithms and proofs relevant to different aspects (design, architecture and implementation) are covered. The general approach is go through design, architecture (storage and indexes), core features (transactions, concurrency), and specialized database usage (data-mining, data-warehousing, distributed databases). The practical work done in the course goes through usage of some advanced SQL features and the implementation of some algorithms and coding of internals of an actual database system.

 

SWE 423: Advanced Data Structures and Algorithms

This course provides a rigorous view into data structures and algorithms as used in computer programming. Though practical exercises, the course explores traditional and contemporary problems in data structures and algorithms, performance analysis as well as algorithm optimizations. Topics include search tree construction, tree balancing techniques, algorithms from graph theory and computational geometry, string matching algorithms, skip lists and hash tables, and techniques for parallel algorithms.

 

SWE 433: Entrepreneurial project

The Students  will conceive and launch a software product or service using the principles of “Lean Startup”. The entrepreneurship project includes the development of a prototype and a business plan for a startup. Entrepreneurship projects are typically completed in teams of 2-4 students.

 

SWE 233: Software Engineering  Internship 1

Field visits to Softwares companies will be carried out to expose students to practice all/some of the Software engineering skills learned.

 

SWE 333: Software Engineering  Internship 2

Field visits to Softwares companies will be carried out to expose students to practice all/some of the Software engineering skills learned.

SEE WHAT SMU CAN DO FOR YOU!