CSAC 329 - Applied Cryptography
This course focuses on how security problems are solved in the industry and understanding why specific choices are made. Topics include Basic symmetric-key encryption (Block ciphers), Message integrity, Public Key cryptography, and Digital Signatures.
Software Engineering I
This course comprises of two (2) sequence semesters. The first part of the course covers the fundamental concepts and methodologies of software engineering. It emphasizes the main phases of the software lifecycle, such as requirements, design, implementation, testing, project planning. Also, it stresses the difference between the software product and process. The course incorporates a class project.
Application Development and Emerging Technologies
Technology is rapidly changing and evolving. An IT professional must be able to identify the potential benefits of new technology and determine the feasibility of implementation into a given system. Students will learn to research and apply new and/or innovative technologies which are being integrated into the Information Technology environment. This course will provide students with the opportunity to investigate trends and examine the potential impact of the technology.
Fundamentals of Programming
This course covers the use of general purpose programming language, the C programming language in particular, to solve problems. The emphasis is to train the students to design, implement, test, debug and assess programs intended to solve computing problems using fundamental programming constructs.
CSEC 311 - Defensive Programming
The course provides learning to avoid common security defects, to analyze the relationship between defensive programming and confidentiality, integrity and availability, and to write a secure program. Topics include defensive programming, secure input validation and output handling, buffer overflow attack and prevention, vulnerabilities in mobile programming, access control and confidential information, mobile malware, restriction on access to components, and isolation of file system and database, injection and inclusion, accessibility and extensibility, mutability, and serialization and deserialization.
SOFTWARE ENGINEERING 1
This course comprises of two (2) sequence semesters. The first part of the course covers the fundamental concepts and methodologies of software engineering. It emphasizes the main phases of the software lifecycle, such as requirements, design, implementation, testing, project planning. Also, it stresses the difference between the software product and process. The course incorporates a class project.
Introduction to Computing - CS
This course provides an overview of the Computing Industry and Computing ofprofession, including research and Applications in different fields; an Appreciation Computing in different fields such as Biology, Sociology, Environment and Gaming; an Understanding of ACM Requirements; an Appreciation of the history of computing; and Knowledge of the Key Components of Computer Systems (Organization and Architecture), Malware, Computer Security, Internet and Internet protocols, HTML5 and CSS.
Architecture and Organization
This
course is the introduction and overview of basic computer organization. Topics
include Computer arithmetic: binary, hexadecimal and decimal number
conversions, binary number arithmetic and IEEE binary floating-point number
standard. Basic computer logic: gates, combinational circuits, sequential
circuits, adders, ALU, SRAM and DRAM. Basic assembly language programming,
basic Instruction Set Architecture (ISA), and the design of single cycle CPU.
Operating Systems
The
course will start with a brief historical perspective of the evolution of
operating systems over the last fifty years and then cover the major components
of most operating systems. This discussion will cover the tradeoffs that can be
made between performance and functionality during the design and implementation
of an operating system. Particular emphasis will be given to three major OS
subsystems: process management (processes, threads, CPU scheduling,
synchronization, and deadlock), memory management (segmentation, paging,
swapping), and file systems; and on operating system support for distributed
systems.
Data Structure and Algorithms
The course covers the standard data representation and algorithms to solve computing problems efficiently (with respect to space requirements and time complexity of algorithm). This covers the following: Stacks, Queues, Trees, Graphs, Maps and Sets. Thorough discussion of sorting and searching.
Network Security
Students will perform a variety of network support skills necessary to keep a company's network running efficiently - with less downtime. Students will solve advanced company wide support problems and high-level network problems. Additionally, students will perform planning, installation, configuration, troubleshooting and upgrade services for networks.
Science, Technology and Society
The course deals with
interactions between science and technology and social, cultural, political,
and economic contexts that shape and are shaped by them (CMO No. 20, series of 2013).
This interdisciplinary course engages students to confront the realities
brought about by science and technology in society. Such realities pervade the
personal, the public, and the global aspects of our living and are integral to
human development. Scientific knowledge and technological development happen in
the context of society with all its socio-political, cultural, economic, and
philosophical underpinnings at play. This course seeks to instill reflective
knowledge in the students that they are able to live the good life and display
ethical decision making in the face of scientific and technological
advancement. This course includes mandatory topics on climate change and
environmental awareness.
Discrete Structures I
This is a test.
CSAC 316 - Digital Forensics 1
Social Issues and Professional Practice
Undergraduates also need to understand the basic cultural, social, legal, and ethical issues inherent in the
discipline of computing. They should understand where the discipline has been, where it is, and where it is heading.
They should also understand their individual roles in this process, as well as appreciate the philosophical questions,
technical problems, and aesthetic values that play an important part in the development of the discipline.
Students also need to develop the ability to ask serious questions about the social impact of computing and to
evaluate proposed answers to those questions. Future practitioners must be able to anticipate the impact of
introducing a given product into a given environment. Will that product enhance or degrade the quality of life?
What will the impact be upon individuals, groups, and institutions?
Finally, students need to be aware of the basic legal rights of software and hardware vendors and users, and they
also need to appreciate the ethical values that are the basis for those rights. Future practitioners must understand
the responsibility that they will bear, and the possible consequences of failure. They must understand their own
limitations as well as the limitations of their tools. All practitioners must make a long-term commitment to
remaining current in their chosen specialties and in the discipline of computing as a whole.