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.
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.
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.
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.
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.
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.
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.
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.