Software Engineering
Chairperson: Dr. Areej Al-Wabil, Assistant Professor of Software Engineering
Ph: +966 11 215 8878
E: awabil@alfaisal.edu
Web address: https://coe.alfaisal.edu/en/se-home
General Department Information
Anywhere you look certainly you will find software taking care of business: on your computer and in your smartphone, in your dishwasher and in your car, in the bank, supermarket, or mall, on the streets or in your house. Software makes things run smarter and cheaper, generally providing a better quality of life. And since software has become a main and important part of life, it needs professionals to take care of how it is designed, implemented and installed, and to make sure that it stays working correctly after it is installed. This is what Software Engineers do.
There are many things a Software Engineer can be a part of that mainly involve developing software. A sophisticated software, like any other man-made complex system, needs to be engineered based on very well-defined laws and techniques. The development must follow well-defined software development processes. A software engineer must learn various programming and software development techniques, and must acquire a fair understanding of different software platforms in order to be able to design software that runs on those different platforms (e.g. desktops, laptops, pads, smartphones, game consoles). But for a software developer to know what to develop, he or she needs to know what all the requirements for the software are. These requirements may be broadly separated into what the software system must do (functional requirements), and how it is supposed to do it (non-functional requirements). Consider, for instance reliability as a non-functional requirement. In the case of software running a fighter jet or a pacemaker, both the equipment and the software running it must be absolutely reliable with no room for failure. However, lesser reliability can be tolerated in a game running on your Android. Accuracy, is another non-functional requirement. Would you consider what could go wrong if the software running your bank made a mistake in its calculations? For these and for other reasons, it is vital that a software engineer regularly interacts with the client to make sure that the developers know what the expectations from the software exactly are before it is designed and implemented. You may also know that it is important that a software is extensively tested before it is delivered to the client or made available to the public. Testing and validation is a major phase in the software engineering process. It achieves a main objective, which is making sure that the software meets the clients' requirements. And due to the complexity and the size of the software, oftentimes a software engineer is not directly involved in these different stages, but in managing how the software evolves from one stage to another. Crafting a process for developing a software is not an easy task, as sometimes many people can participate in the software, and they may not necessarily be in the same room, building or country. Engineering a software development process has hence become one of the important disciplines that a software engineer can excel at.
Today, in Saudi Arabia and the world, there is a great demand for software engineers. Local companies like Microsoft, IBM, Cisco Systems, Oracle, Aramco, SCECO, SABIC, banks, telecommunications providers and carriers such as STC, Mobily and Zain, in addition to multinationals such as Google, Apple, Microsoft, Siemens and Telus – all have constant interest in software engineers across all branches. Here, at Alfaisal University, we have a world class SE program that helps prepare you for the international job market, and that makes you able to take part in powering up the world.
Classes
SE 100 L: Programming for Engineers Lab
SE 117: Software Practice and Society
SE 120: Object-Oriented Programming I
SE 120 L: Object-Oriented Programming I Lab
SE 201: Introduction to Software Engineering
SE 212: Discrete Structures for Software Engineers
SE 214: Algorithms and Data Structures
SE 214 L: Algorithms and Data Structures Lab
SE 220: Object-Oriented Programming II
SE 220 L: Object-Oriented Programming II Lab
SE 225: Software Requirements
SE 225 L: Software Requirements Lab
SE 310: Software Design and Architecture
SE 312: Database Management Systems
SE 312 L: Database Management Systems Lab
SE 314: Operating Systems
SE 314 L: Operating Systems Lab
SE 322: Internet of Things Application Development
SE 324: Web Application Development
SE 324 L: Web Application Development Lab
SE 328: Mobile Application Development
SE 328 L: Mobile Application Development Lab
SE 330: Introduction to Cybersecurity
SE 390: Software Engineering Summer Internship
An internship it is an important aspect of Software Engineering curriculum that provides the student with hands-on experience and a good sense of what an actual job in an organization will be like. Students are required to join an IT department in a government or private organization for a summer period of at least 8 weeks in the last summer prior to student graduation. Students should be able to relate the internship experience to the knowledge that he or she has gained through the Software Engineering program courses.
SE 412: Software Testing and Quality Assurance
SE 414: Software Project Management
SE 423: Software Construction and Processes
SE 435: Undergraduate Research in Software Engineering
SE 440: Special Topics in Software Engineering
SE 440: Special Topics in Software Engineering
SE 441: Telecommunications Software Design
SE 442: Social Networks for Software Engineers
SE 443: Cloud Computing for Software Engineers
SE 444: Artificial Intelligence
SE 445: Information and Software Security
SE 446: Introduction to Big Data
SE 447: Introduction to Machine Learning
SE 448: Blockchain Development
SE 449: Data Analytics
This course prepares students to gather, describe, and analyze data, and use advanced statistical tools to make decisions on operations, risk management, finance, marketing, etc. Analysis is done targeting economic and financial decisions in complex systems that involve multiple partners. Topics include probability, statistics, hypothesis testing, regression, clustering, decision trees, and forecasting.
SE 450: Cryptography and Data Privacy
This course is an introduction to the basic concepts and mechanisms of applied cryptography and data security. It will cover both cryptographic primitives (symmetric encryption, public encryption, MACs, Digital Signatures, Authenticated Encryption, etc.) to cope with the data confidentiality and data integrity. It also emphasizes on how to apply and implement cryptography in practice.
SE 451: Secure Software Engineering
This course provides a foundation for building secure software by applying security principles to the software development lifecycle. Topics covered include security in requirements engineering, secure designs, risk analysis, threat modeling, deploying cryptographic algorithms, defensive coding, penetration testing, fuzzing, static analysis, and security assessment. Students will learn the practical skills for developing and testing for secure software while also learning sound security fundamentals from real-world case studies.
SE 452: Network Security
This course addresses security issues for TCP/IP-based and NT networks. Access Control and Communications Security issues will be covered as well as Internet and intranet security.
SE 453: Security Risk Management & Control
This course provides an overview of the fields of IT Security and Risk Management. IT Security and Risk Management are concerned with threats to the Confidentiality, Integrity, and Availability (CIA) of information systems. Risk management comprises a set of coordinated activities to direct and control an organization regarding risk. This course will explore how IT Security and Risk Management intersect with the management of records and information in digital environments and will address the application of IT Security and Risk Management theories, principles, and techniques to the management records and information-related risks.
SE 454: Ethical Hacking and Systems Defense
This course is designed to introduce students to the fundamentals of hacking and becoming an ethical hacker. The course focuses on the code of conduct and ethics of attacking systems. The course also teaches the mindset of the criminal hacker and evolution of the hacker. Students also gain fundamental understanding and education on the elements of compromising computer systems for the explicit purposes of securing them from criminals. The course makes a very clear distinction between criminal hacking and ethical hacking, and only teaches the latter. The course then focuses on some fundamentals of system defense, including configurations and software to prevent unauthorized system access.