​​Courses descriptions

CS 101 COMPUTER PROGRAMMING I

Credits: 4 (4,0,2)             Prerequisite:     None

This course is an introduction to the craft of programming, techniques, practices and applications. By the end of the semester, students should have a basic understanding of programming concepts and constructs such as variables, numbers, strings, assignments, sequential versus selective execution, nesting loops, functions, arrays, reference parameters, etc. Furthermore, the student should have understood the importance of a structured approach to software development. The course includes lab sessions that take place once a week. Lab projects involve programming exercises that could be typically completed during the lab session. Additionally students are required to work in team to develop and demonstrate an interactive program as a class project.

 

CS 102 COMPUTER PROGRAMMING II

Credits: 3 (3,1,0)             Prerequisite:     CS 101

The purpose of this course is to develop an intermediate understanding of object-oriented programming concepts. Some sophisticated uses of object-oriented concepts (inheritance, polymorphism, encapsulation, multiple inheritance using interfaces, and Java Collection Frameworks, Generic classes and Recursion) and techniques for building systems of multiple interacting components. This course teaches students how to develop Java applications.  Students will develop and test Java applications (typically) using Netbeans IDE.

 

CS 175 COMPUTER ORGANIZATION AND DIGITAL LOGIC

Credits:  3 (3,1,0)            Prerequisite:     None-

This course explores computer organization and digital logic. It covers an introduction to information representation and number systems. It introduces students to Boolean algebra and its usage in manipulation and minimization of Boolean functions.  It covers combinational circuit analysis and design, multiplexers, decoders, comparators, and adder, in addition to, basic topics in computer organization such as CPU, Memory, Cache Memory, and Bus systems.

 

CS 202 COMPUTER APPLICATIONS FOR BUSINESS (For non-IS and CS majors)

Credits: 3 (2,0,2).            Prerequisite:     at least 60 credit hours.

CS 202 introduces computer concepts within the framework of business applications. We will use integrated software packages “Microsoft Office 2010" (Excel, Project, and Visio) to build a solid foundation in the use of spreadsheets (decision making), Project Management and Visio for graphical modeling. The main purpose of this course is to provide students with computer application skills especially in the areas of accounting, finance and marketing. Applications covered include electronic spreadsheet and its macros, statistical analysis, graphics and presentation tools and Project Management. In addition, students must be proficient in using drawing tool Microsoft Visio.

 

CS 210 DATA STRUCTURE AND ALGORITHMS

Credits: 3(3,1,0)              Prerequisite:     CS 102

This course introduces classical data structures and algorithms with emphasis on performance using asymptotic analysis of algorithms and complexity classes. Fundamental data structure includes lists, stacks, queues, heaps, trees, and graphs. The student will learn a variety of algorithms for searching, sorting, traversing and hashing.  In addition, the course covers the application of these data structures and algorithms in real-life problems and implementing them in modern programming languages.

 

CS 225 SOFTWARE ENGINEERING: DESIGN AND DEVELOPMENT

Credits: 3(3,1,0)               Prerequisite:    CS 210

This course serves as an introduction to software engineering design and development. Students learn various aspects of software development stages. The following aspects of software are reviewed as well: process models, life cycles, requirement analysis, documentation, design methodologies, development strategies and project management. The course emphasizes the development of high-quality software using software engineering best principles.

               

CS 285 DISCRETE MATHEMATICS FOR COMPUTING

Credits: 3(3,1,0)                 Prerequisite:     CS 101

The course introduces the students to mathematical logic, fundamental discrete structures, such as: sets, functions, relations and graphs. Mathematical reasoning and various counting techniques are also covered in the course. Throughout the course students apply the techniques they learn to simplified practical problems. This course prepares the students for higher level computing courses where these concepts are of fundamental importance

 

CS 311 DESIGN AND ANALYSIS OF ALGORITHMS

Credits: 3(3,1,0)                           Prerequisite:     CS 285,CS210

Introduction to fundamental techniques for designing and analyzing algorithms, including asymptotic analysis; divide-and-conquer algorithms and recurrences; greedy algorithms; data structures; dynamic programming; graph algorithms; and randomized algorithms. Finally, the course will introduce the different classes of complexity theory, which explain the intractability of some problems and a classification of problems by their complexity.

 

CS 315: PARALLEL AND MULTICORE PROGRAMMING

Credits: 3(3,1,0)                           Prerequisites:   CS175, CS 210

This course is an introduction to parallel programming with a special emphasis on the techniques appropriate to multicore systems. The topics covered include performance analysis and tuning, data and task parallelism, synchronization techniques, shared data structures, and load balancing. The course features many hands-on practice sheets plus a term project.

 

CS 320 PROGRAMMING LANGUAGES: CONCEPTS AND PARADIGMS

Credits: 3(3,1,0)                             Prerequisite:     CS210

CS 320 provides undergraduate students with an overview of the theoretical foundations of programming languages. Topics covered in this course include: introduction to different language paradigms (functional, logic and object-oriented), the history of programming languages and language design principles, syntax specification (using BNF, EBNF, and syntax diagrams), central semantic issues of programming languages (declaration, allocation, evaluation). Major languages covered include C, C++, Smalltalk, Java, Ada, ML, Haskell, Scheme, and Prolog; many other languages are discussed more briefly.

 

CS 330 INTRODUCTION TO OPERATING SYSTEMS

Credits: 3(3,1,0)                             Prerequisites:   CS 210, CS175

This course explores the evolution, services, and structures of operating systems. It covers the basic concepts of operating system design and implementation and management of system resources such as Central Processing Unit (CPU), Input/output (I/O) devices, memory, and software. Examples given from modern operating systems such as Unix and Windows-driven operating systems are scrutinized.

 

CS 331 DATA COMMUNICATIONS AND COMPUTER NETWORKS

Credits: 3(3,1,0)                            Prerequisite:     CS 175, CS 210

This course introduces the basic concepts in data communication and computer networks. Topics covered include the nature of data communication, characteristics of computer networks, the ISO-OSI network protocol layers, topologies and models, error detection and correction codes, and network performance considerations.

 

CS 336 NETWORK OPERATIONS AND ADMINISTRATION

Credits: 3(3,0,1)                            Prerequisite:     CS 331

This course surveys network operations and provides an overview of TCP/IP network management; network planning, configuring, installing and diagnosing; network monitoring, analysis and performance tuning; network security; users accounts; and managing system resources.

 

CS 340 INTRODUCTION TO DATABASE SYSTEMS

Credits: 3(3,1,0)                              Prerequisite:     CS 210

This course provides a solid background in database systems and modeling.  Following an overview of database systems (definitions, evolution, architecture and applications), data models are examined. Topics discussed include entity-relationship and relational data models; database query languages and standards; and database design: theory and methodology.

 

CS 355 COMPUTER ARCHITECTURE

Credits: 3(3,1,0)                             Prerequisite:     CS 175

This course broadly surveys the design of computer systems and components. Topics covered: basic processor organization, data and control paths of the simple processor, hardwired and micro-programmed control unit, RISC vs. CISC organization. Abstract views of the computer at various levels are examined in terms of high-level language, OS, assembly language and internal register-transfer level (RTL), I/O organization, memory hierarchy, and virtual memory.

 

CS 360 COMPUTER GRAPHICS

Credits: 3(3,1,0)                              Prerequisite:     CS 210

This course introduces the basic elements and algorithms of computer graphics including design, creation and manipulation of two and three dimensional graphics. Students will learn about the different application domains of graphics. Students will produce computer graphics applications, which represent, manipulate and display geometric information.

 

CS 370 INTRODUCTION TO ARTIFICIAL INTELLIGENCE

Credits: 3(3,1,0)                              Prerequisite:     CS 210

This course provides an overview of Artificial Intelligence (AI) – definitions, evolutions and applications. Subject areas looked at include: problem solving; knowledge representation methods and techniques; structures and strategies for state space search; and heuristic search techniques.

 

CS 375 WEB DESIGN

Credits: 3(3,0,1)                              Prerequisite:     SE 371

This course introduces intermediate to advanced web page design techniques. Topics include effective use of graphics, fonts, colors, navigation tools, advanced markup language elements, as well as a study of bad design techniques. Upon completion, students are able to employ advanced design techniques to create functional and high impact web pages.

 

CS 381 SYSTEMS PROGRAMMING

Credits: 3(2,0,2)                              Prerequisite:     CS 330

The course covers the following topics: systems programming at hardware or OS levels; software for systems programming (e.g., C++ builder); Shell/ Windows Interface programming; design and implementation of applications/ system's functions; and debugging tools.

 

CS 387 MOBILE APPLICATIONS DEVELOPMENT

Credits: 3(3,0,1)                            Prerequisite:     SE 371

This course examines the principles of mobile application design and development. Students will learn application development on the Android platform. Topics will include characteristics of Mobile Applications; Designing user interfaces; Displaying multimedia contents such as pictures, menus, audio and video; data handling; network techniques and location based services. Students are expected to work on a project that produces a professional-quality mobile application. Projects will be deployed in real-world applications.

 

CS 391 COMPUTER AND NETWORK SECURITY

Credits:  3 (3,0,1)                        Prerequisite:     CS 331

This course covers major aspects of computer and network security. It starts with standardized definition of security, including security services, security attacks, then proceeds to cover many cryptographic techniques such as ciphers, hash functions, MAC techniques, key management approaches, digital certificates and digital signatures. The course also covers Network security domain, where network vulnerabilities are addressed through email security, Secure Socket Layer (SSL), IP Security (IPsec) and wireless network security topics. Operational security and policies are introduced by presenting ethical hacking, intrusion detection/prevention systems and firewalls.

 

CS 412 THEORY OF COMPUTATION

Credits: 3(3,1,0)                             Prerequisite:     CS 285

This course probes the theory of computation. Topics covered include: foundations – sets, relations and languages; finite automata, Turing machines; decidability and computability, computational complexity and NP-completeness.

 

CS 415 INTERNET OF THINGS (IoT)

Credits: 3(3,0,1)                           Prerequisites:     Senior Level

The course on Internet-of-Things (IoT) aims at preparing students to the IoT market in Saudi Arabia, given the increasing demand for engineers on this hot emerging area. The course presents the latest technologies, architecture, communication protocols and trends that are contributing to the evolution of the Internet-of-Things (IoT). It will provide an overview of IoT applications and its impact on the world economy. The course will also cover the technologies and cyber-physical platforms that transform the physical world into digital data thus allowing to connect physical things to the Internet. We will also cover networking and communication protocols (LoRa, SigFox, NarrowBand IoT, 5G, IEEE 802.15.4) that represent the major actors in the IoT ecosystem. IoT streaming applications used in IoT will be reviewed such as Apache Kafka and MQTT protocol. A major part of the course will deal with developing real-world applications prototypes for the Internet-of-Things from the sensor design to the end-user applications to solve existing problems in the society. At the end of this course, the student will be ready to enter the IoT market or making his own startup.

 

CS 417 BUSINESS INTELLIGENCE

Credits:  3(3,0,1)                     Prerequisites:   CS 340

This course looks at the theory and practice of data mining applied for business. The course focuses on practical applications of data mining for business decision making. Generally available tools (e.g., EXCEL) are used to illustrate the development of decision support applications for the modern data-centric enterprise. Lessons are given on general theoretical and implementation principles; specific methods and techniques; and critical reviews of case-studies. Other topics include: data analysis methods, data mining processes, descriptive modeling, and predictive modeling for business decision-making.

 

CS 421 COMPILER CONSTRUCTION

Credits: 3(3,0,1)                              Prerequisite:     CS 320

The course is designed to cover the basic techniques that underlie the practice of Compiler Construction. Examination of the theory and tools involved includes: lexical analysis and parsing; syntax-directed translation; intermediate and machine code generation; optimization; and run- time organization.

 

CS 425 ADVANCED SOFTWARE ENGINEERING

Credits: 3(3,0,1)                              Prerequisite:     CS 225

This course goes deeper into the ever-expanding realm of Software Engineering (SE). Following a brief review of SE fundamentals, these software areas are probed: qualities and principles; verification and validation processes; tools and environments; testing and maintenance; interactive technology; and project management.

 

CS 427 NETWORK DESIGN

Credits: 3(3,0,1)                              Prerequisite:     CS 331

The course surveys an extensive range of topics relating to Network Design (ND). Items covered include: ND basic concepts, terminology and methodology; ND evaluation – characterizing the existing network, network traffic, and identifying customer needs; logical ND – designing network topology, models for naming addressing, selecting bridging, switching and routing protocols, developing network security and network management strategies; physical ND – selecting technologies and devices for campus networks, selecting technologies and devices for enterprise networks, testing optimizing and documenting the network design.

 

CS 430 ADVANCED OPERATING SYSTEMS

Credits:  3(3,0,1)                    Prerequisite:     CS 330

This course takes in-depth looks at advanced concepts in operating systems. Items under inspection include: management of concurrent processes; security and protection of computer systems; distributed file systems; and virtual memory. Ample opportunity is provided for hands- on experiments in programming concurrent applications.

 

CS 431 EMERGING TOPICS IN NETWORK SECURITY

Credits:  3(3,0,1)                     Prerequisite:     CS 391

This course gives opportunities to cover emerging security topics in different types of networks. Such networks include the Internet and its related network services such as Interne of Things (IoTs) and cloud services. Also, the security of Mobile networks (4G & beyond) and Wireless networks could be studied. Wireless networks whether infrastructure-based such as WLAN (IEEE802.11), WiMax (IEEE802.16) or infrastructure less networks such as Mobile Ad hoc Networks (MANET) could be also considered. Moreover, security protocols of Wireless Sensor Network (WSN) could be investigated, threats and hacking methodologies, recent security challenges and solutions will be discussed and critically analysed. Students are expected to gain practical experience and skills through the use of several security tools/simulators.

 

CS 435 DISTRIBUTED SYSTEMS

Credits:  3(3,0,1)                     Prerequisites:   CS 330, CS 331

The course provides an overview – definitions, evolutions, trends, applications – relevant to Distributed Systems (DS). Elements canvassed include: DS architectures; client-server systems; distributed data and object; transaction management; distributed operating systems; and DS algorithms and protocols.

 

CS 437 INTRODUCTION TO PARALLEL COMPUTING

Credits: 3(3,0,1)                           Prerequisite:     CS 311

This is an introductory course on Parallel Computing – definitions, evolutions, applications, and issues. Items of interest are: models of parallel computers – parallel architectures, idealized parallel computer, and interconnection networks; basic Communications operations; performance and scalability of parallel systems; MPI/PVM standard; and parallel applications and programming.

 

CS 439 SEARCH ENGINES AND INFORMATION RETRIEVAL

Credits: 3(3,0,1)                           Prerequisite:     CS 340

The course explores the basic and advanced techniques for extraction of information from search engines. Items of interest relating to information retrieval examined in the course include: web search engines; dictionaries and tolerant retrieval; indexing and invert indexing algorithms; index construction and compressions; handling imprecise matching, ranking and relevance; and machine learning and numerical methods in information retrieval, classification, clustering, web search and challenges.

 

CS 440 DATABASE MANAGEMENT SYSTEMS: DESIGN AND IMPLEMENTATION

Credits:  3(3,0,1)                        Prerequisite:     CS 340

The course presents an overview of database management systems. Subject areas discussed feature: logical data models - relational, hierarchical, network and object-oriented; architectures and components of relational database management systems.

 

CS 447 BUILDING E-COMMERCE SYSTEM

Credits: 3(3,0,1)                              Prerequisite:     SE 371

This course looks at building E-Commerce (EC) systems. After defining the nature of e-commerce systems, the following topics are investigated: EC systems architecture – technical and logistic requirements; user interactions – shopping cart model, handling orders and payments; deploying, marketing and managing e-shops; and security issues.

 

CS 451 ENTERPRISE RESOURCE PLANNING

Credits: 3(3,0,1)                              Prerequisites:   CS 340,

This course introduces the major techniques relating to Enterprise Resource Planning (ERP) systems. ERP software systems provide comprehensive management of financial, manufacturing, sales, distribution and human resources across the enterprise. The course starts by showing how ERP systems provide the foundation for a wide range of e-commerce based processes including web-based ordering and order tracing, inventory management, and built-to-order goods. It explains how ERP systems work, and highlights their role. CS 451 is a useful course for business students interested in information systems management.

 

CS 455 COMPUTATIONAL BIOINFORMATICS

Credits: 3(3,0,1)                              Prerequisite:     CS 311

This course presents an overview of important applications of computers to solve problems in biology. The aim of the course is to introduce CS students to modern computational practices in bioinformatics. Major topics covered are computational molecular biology (analysis of protein and nucleic acid sequences), biological modeling and simulation (including computer models of population dynamics, Bioinformatics databases, BLAST). The course concentrates on the algorithmic details of bioinformatics.

 

CS 460 INTRODUCTION TO ROBOTICS

Credits: 3(3,0,1)                              Prerequisites:   CS 210, Instructor consent

The objective of this course is to present the fundamental concepts to develop autonomous mobile robots. The course covers the basics of mobile robots control, kinematic theory, navigation, localization and perception. The course will consolidate the understanding of theoretical concepts through practical hands-on activities pertaining to robot programming and deployment. The aim of this course is to give PSU students, in computer science and engineering colleges, an opportunity to discover the world of robotics, and design and develop real robotic applications.

 

CS 462 TOPICS IN MULTIMEDIA

Credits: 3(3,0,1)                              Prerequisite:     SE 371

The course introduces techniques and applications relating to multimedia. The two major subject areas of focus are: 1) a study of the principles and practice in computer-enhanced multimedia, and 2) skills development for making multimedia products by incorporating graphics, animation, video, sound and text.

 

CS 465 MACHINE LEARNING

Credits: 3(3,0,1)                              Prerequisite:     CS311

This course covers the theory and practice of machine learning from a variety of perspectives. It explores topics such as learning decision trees, neural network learning, statistical learning methods, genetic algorithms, Bayesian learning methods, explanation-based learning, and reinforcement learning. Typical assignments include neural network learning for face recognition and decision tree learning from databases of credit records.

 

CS 469 DIGITAL  IMAGE PROCESSING

Credits: 3(3,0,1)                              Prerequisites:   CS 210, Instructor consent

The course deals with image processing and its applications. Students learn the fundamental concepts of visual perception and image acquisition, together with the basic techniques of image manipulation, segmentation and coding, and a preliminary understanding of pattern recognition and computer vision.

 

CS 470 ADVANCED ARTIFICIAL INTELLIGENCE

Credits: 3(3,0,1)                              Prerequisite:     CS 370

The course delves deeper into Artificial Intelligence with the focus on knowledge-based systems and natural language processing.

 

CS 471 DATA MINING

Credits: 3(3,0,1)              Prerequisites:   STAT 101, CS 340

This course introduces Data Mining (DM). DM topics range from statistics to machine learning to database, with a focus on analysis of large data sets. The course requires students to apply data mining techniques in order to complete a project involving real data.

 

CS 476 NATURAL LANGUAGE PROCESSING

Credits: 3(3,0,1)                              Prerequisites:   CS 320, Instructor consent

The course is about natural language processing – representation, parsing, natural language generation, and the interaction between long-term knowledge and understanding with a focus on Arabic language processing.

 

CS 478 CONTENT MANAGEMENT

Credits:  3(3,0,1)             Prerequisites:   CS 340, SE 371

This course examines the application of the principles of information retrieval and information architecture to the design of websites and intranets. Topics discussed include: emerging role of the web content manager; organizing information for retrieval; usability design in websites; project management; conceptual design in web site development; and accessibility issues.

 

CS 483 COMPUTER ARABIZATION

Credits: 3(3,0,1)                              Prerequisite:     Instructor consent

The course explores the use of Arabic in Computer Science in the areas of layout, characters shapes and processing, Arabic code pages, Arabic language structure and features.

 

CS 489 SELECTED TOPICS IN COMPUTER SCIENCE

Credits: 3(3,0,1)                              Prerequisite:     Instructor consent

This course covers topics in the computer science discipline not covered by other CS courses. Students are encouraged to propose topics for this course.

 

CS 492 CO-OP  [COOPERATIVE EDUCATION]

Credits: 10                                         Prerequisite:     Department consent

The Co-Op is a career related professional program available to all Computer Science students. It is designed to help students build on skills already learned in the classroom and acquire new ones as well. Co-Op education is available to CCIS students who have accumulated the requisite number or more credits. The Co-Op option counts for 10 credit hours (CRs) for practical onsite experience over a 7 month period, i.e. spanning one semester and a summer.

 

CS 493 CYBERSECURITY CAPSTONE PROJECT

Credits: 3(1,0,3).                              Prerequisite: Department approval

This course allows the student to practice on what they have learned during previous security courses.  Student will be able to design and build a security system, to tackle a cybersecurity problem in an existing system. The course gives the student an opportunity to work with an organization to assess possible risks and study its security needs based on its organizational objectives and business requirements. Alternatively, a student can cooperate with sponsors or be part of a research group.

 

CS 494 INDUSTRY LINK

Credits: 3                             Prerequisite:     Department consent

This is an elective course that follows a pre-planned program administered by the university/ department. It involves spending a specified period of time in several local – and possibly outside – computing institutions and companies and/or enrolling in their orientation programs.

 

CS 495 EMERGING TOPICS IN COMPUTER SCIENCE

Credits: 3(3,0,1)              Prerequisite:     Instructor consent

This course covers topics in the computer science discipline that recently gained innovative attention in Computer Science. Students are encouraged to propose topics for this course.

 

ETHC 303 ETHICAL AND SOCIAL ASPECTS OF COMPUTING

Credits: 3(3,0,0)        Prerequisite:      Junior level

The course concentrates on the theory and practice of computer and information ethics. It covers the basics of ethical decision-making, and emphasizes group work and presentations. Topics studied in the course include risk and reliability, privacy, info-war, crime, access, business ethics, copyright, patents, and more.

 

CS 499 CAPSTONE PROJECT IN COMPUTER SCIENCE

Credits: 3(3,0,0)        Prerequisite:       Senior level + Department consent

Provides students, working in groups, with a significant project experience in which they can integrate much of the material they have learned in their program. Students will develop a significant software system, employing knowledge gained from courses throughout the program.                     

 

CYS 401 FUNDAMENTALS OF CYBERSECURITY

Credits:  3(3,0,1)             Prerequisite:     Junior Level

Fundamentals of Cybersecurity was designed to help students develop a deeper understanding of modern information and system protection technology and methods. This course is designed to provide an overview and understanding of established cyber security strategy as well as provide students with the opportunity to engage in strategic decision making in the context of cyber security.

 

CYS 402 SECURE SOFTWARE DEVELOPMENT

Credits:  3(3,0,1)             Prerequisite:     CYS401

This course covers the concepts of software assurance and the fundamentals of the secure software lifecycle as it relates to software development. The course will discuss the secure software development lifecycle phase by phase establishing and discussing best practices in these phases. Students will experience the secure software lifecycle process by developing concrete artifacts and practicing in a lab environment.

 

CYS 403 SECURITY RISK MANAGEMENT, GOVERNANCE & CONTROL

Credits:  3(3,0,1)             Prerequisite:     CYS401

This course will focus on establishing the balance between business use and safeguard policies. It will concentrate on preparation of Security policies as well as implementing and assessing them based on business process. This course extends to focus on auditing, governance, internal controls, and standards contained within policy frameworks. It will look at processes to evaluate risks (Risk Assessment) based on current legislation, practices, and techniques.

 

CYS 404 CYBER-PHYSICAL SYSTEMS SECURITY

Credits:  3(3,0,1)             Prerequisite:     CS331 and CYS401

This course provides an introduction to security issues relating to various cyber-physical. The goal is to expose students to fundamental security primitives specific to cyber-physical systems and to apply them to a broad range of current and future security challenges. Students will work with various tools and techniques used by hackers to compromise computer systems, smart technologies, IoT devices, embedded systems or otherwise interfere with normal operations. This course will offer insights from cutting edge applied research about the strategies and techniques that can be implemented to protect against cyber-attacks.

 

CYS 405 PENETRATION TESTING AND ETHICAL HACKING

Credits:  3(3,0,1)             Prerequisite:     CS331 and CYS401

This course covers the study of techniques used by hackers to break into an organization. It gives students the necessary tools to have a hacker mind-set in order to protect network against future attacks. It gives an introduction to the principles and techniques associated with cybersecurity practice known as penetration testing or ethical hacking. This course illustrates the differences between ethical and unethical penetration testing, describes and explains the phases of a penetration test including planning, reconnaissance, scanning, exploitation, post-exploitation, and result reporting. Students will be able to apply different tools and methods to conduct penetration tests for the purpose of discovering how system vulnerabilities can be exploited and learn to avoid such problems.

 

DMS 310 INTRODUCTION TO VISUAL DESIGN

Credits:  3(3,0,1)             Prerequisite:     Junior Level

This course introduces visual design through formal studies. This course covers understanding of elements and principles of design, typography, composition and branding. Students are able to produce designs such as posters, brochures, branding and package design.

 

DMS 322            FOUNDATIONS OF INTERACTIVE DIGITAL MEDIA

Credits:  3(3,0,1)             Prerequisite:     Junior Level

The course covers fundamental of digital media elements such as text, graphics, sound, video and animation. Students will be involved in planning, designing and producing interactive digital media projects in this course. Students will learn various types of digital media authoring tools that can be used in the development of digital media application.  This course offers the opportunity for students to develop their design and development skills in digital media areas.

 

DMS 327            3D MODELING AND DESIGN

Credits:  3(3,0,1)             Prerequisite:     Senior Level

This course offers students an introduction to the 3D design and modeling. The course covers related techniques needed to create 3D objects and scenes from modeling to rendering, including modeling with primitives and polygons, texturing, lighting and animation. Students will produce contents related to basic 3D objects and animation.

 

DMS 332            NETWORK-BASED MULTIMEDIA

Credits:  3(3,0,1)             Prerequisite:     CS 331

This course introduces the principles of designing multimedia applications then explores recent technology advances to support multimedia application over networks. Major topics include multimedia compression, protocols and standards for audio/video streaming, VoIP, and the quality of service techniques. It discusses the real time protocols such RTP and addresses the challenges of media streaming over wireless network and security issues.

 

 

DMS 351            PRINCIPLES OF ANIMATION

Credits:  3 (3,0,1)            Prerequisite:     Junior Level

This course covers the basic concepts of animation, principles of animation and animation production process. This course also exposes students to a variety of animation techniques. Students will create short animation productions both in traditional (cel animation, rotoscoping, clay and stop-motion animation) and 2D computer generated animation with correct sketching, storyboarding, key framing, character design, background layouts, timing and sound effects.

 

 

DMS 401 MEDIA AUTHORING TOOLS AND TECHNOLOGIES

Credits:  3 (3,0,1)            Prerequisite:     DMS 322

This course introduces the principles, concepts and terminology of digital media authoring systems. The underlying development engines are described and how these systems work are explained. The most current digital media authoring tools and technologies are surveyed and critically assessed. With the above background in place, students are given the opportunity to use these tools and technologies to author complex multimedia content related to real life applications with an emphasis on creativity, design and team work.

 

DMS 426 GAME DEVELOPMENT

Credits:  3(3,0,1)             Prerequisite:     Senior Level

This course emphasis on the theoretical and practical foundations of game development. Students will learn the art of designing a game concept and documentation, developing the game prototype and testing the game ideas. Upon completion of this course, students will be able to apply game design and development techniques to bring a game from design through production to playable experience. Topics covered include: history of digital games, game design and development methodologies, game engines and tools.

 

DMS 471 BUILDING RICH WEB APPLICATIONS

Credits:  3(3,0,1)             Prerequisite:     SE 371

This course makes a transition from traditional GUI IDEs to entirely programmatic environment using a framework such as FLEX/MXML and an ECMA script-compliant scripting language. The course makes use of Communications protocols to transfer serialized data and objects to enhance the speed of Communications between Rich Internet Applications (RIAs)and server. The course helps students learn how to use programming methodologies such as interfaces to create layers of abstraction and design patterns – e.g. MVC, Observer or Singleton to deal with common requirements for web-based, interactive media applications. The end point of the course is for students to design sophisticated RIAs.

 

DMS 495   EMERGING TOPICS IN DIGITAL MEDIA

Credits:  3(3,0,1)             Prerequisite:     Senior Level

The course provides a platform for students to develop a portfolio of work based on the current demand from the industry. Students will work collaboratively to develop a project in digital media areas throughout the course. Students are exposed to the cycle of digital media application developments with real users. Appropriate tools and techniques will be covered upon execution of the project.

 

SE 201 INTRODUCTION TO SOFTWARE ENGINEERING

Credits:  3 (3,0,1)                      Prerequisite:            CS 102+ ENG 103

This course introduces software engineering as a discipline. It starts by a general introduction on the evolution of the discipline, then introduces the software life-cycle, software processes, requirement analysis, design, implementation, testing. This course covers the various Software Development Processes and requires students to appreciate and apply various aspects of software engineering principles. Classical Software Development Life-cycles from waterfall, spiral, incremental, evolutional to recent lean, agile methods and component based systems are covered. Special emphasis is put on quality and process improvement models such as CMM, PSP and TSP. This introduction is complimented by practical training to develop some of the basic software engineering skills. The skills covered include planning, estimation, scheduling, testing, debugging, quality management …etc

 

SE 311 SOFTWARE REQUIREMENTS ENGINEERING

Credits:  3 (3,0,1)                         Prerequisite:       SE 201 for SE students, CS 225 for CS students

This course covers software requirements, applied to a variety of types of software. It also covers techniques for discovering and eliciting requirements, requirements documentation standards, languages and models for representing requirements, analysis and validation techniques, including need, goal, and use case analysis, requirements in the context of system engineering, specifying and measuring external qualities: performance, reliability, availability, safety, security, etc., and requirements management: handling requirements changes, traceability, resolving feature interactions.

 

SE 322 SOFTWARE DESIGN AND ARCHITECTURE

Credits:  3 (3,0,1)                            Prerequisite:              SE 311

This course covers software design in-depth. Study of fundamental design concepts, design notations, and architectural design methods for large-scale software systems; several design methods are presented and compared, with examples of their use; Concepts such as information hiding, data abstraction, concurrency, and object-oriented software construction are discussed in depth; Students participate in a group project on software design.

 

SE 353 BUILDING SECURE SOFTWARE SYSTEMS

Credits:  3 (3,1,0)                            Prerequisite:          CS331

This course studies approaches, mechanisms, and tools used to make software systems more secure. The course will motivate the study by discussing common software security dangers (e.g., buffer overflow attacks, cross-site scripting). The majority of the course will be divided into four main modules: architectural approaches to building secure software (e.g., confinement, virtual machines, trusted computing); software analysis (e.g., static analysis and testing, model checking); language-based approaches to building secure software (e.g., type systems, proof-carrying code); and run-time enforcement of security policies (e.g., dynamic taint analysis).

 

SE 365 HUMAN COMPUTER INTERACTION

Credits:  3 (3,1,0)                            Prerequisite:       CS 210

This course covers the introduction to the concepts underlying the design of human-computer interaction: usability, direct manipulation, systematic design methods, user conceptual models and interface metaphors, design languages and genres, human cognitive and physical ergonomics, information and interactivity structures, design tools and environments. This course teaches how HCI affects the overall design of interfaces. The course covers four major parts: the foundation, the design process, models and theories, and think outside the box.

 

SE 371 WEB ENGINEERING

Credits: 3(3,0,1)                      Prerequisite:    CS 210

This course covers the major aspects of full-stack web applications development. Full-stack web development involves the design and development of front-end and back-end applications in web framework. The course starts with a short introduction on the web applications architecture and underlying technologies, including HTML (focus on HTML 5), Cascading Style Sheets (CSS) and JavaScript for client-side scripting. The course then proceeds to cover server side Web application development in depth, including the multi-tier development model (data tier, business tier, presentation tier), web database development, authentication, navigation, working with XML, state management, caching, ...etc.

 

SE 381 EMBEDDED SOFTWARE ENGINEERING

Credits:  3 (3,0,1)                            Prerequisite:        SE 322, CS 355

This course discusses software engineering practice and methods for embedded systems, focused around state machines as a unifying formalism for understanding software, hardware, and systems. It also discusses embedded software requirements, specification, analysis, principles of embedded software architecture and design, design of concurrent systems, and testing and analysis techniques for embedded systems.

 

SE 401 SOFTWARE QUALITY ASSURANCE AND TESTING

Credits:  3 (3,1,0)                            Prerequisite:          SE 322

This course is designed to give an understanding of the key concepts and principles in creating and managing successful software testing to meet specific requirements using best practices of software quality assurance. Topics covered include software quality assurance, testing process, test design & coverage techniques and testing strategy. Best practice strategies in object-oriented software testing and web application are also discussed. An overview of test automation methods and tools is also covered.

 

SE 403 SIGNAL PROCESSING SYSTEMS

Credits: 3 (3, 0, 1).                Prerequisite:    CS 210

Digital signal processing (DSP) systems have been enabled by the advances in very-large scale-integrated (VLSI) technologies. New DSP applications constantly impose new challenges on VLSI implementations. These implementations must satisfy real-time constraints imposed by the applications and must fit increasingly stringent area and power envelope. This course will survey methodologies needed to design efficient and high-performance custom or semi-custom VLSI systems for DSP applications. The primary focus of the course is on design of architectures, algorithms, and circuits, which can be operated with small area and low power consumption to deliver a high speed and functional performance.

 

SE 407 MICROPROCESSOR BASED SYSTEMS

Credits: 3(3, 0, 1)                  Prerequisite: CS 355

This course is focused on the principles and practices of modern embedded systems design. It will focus on computer architecture beyond the CPU, fundamentals of the hardware/software interface, techniques for sensing and controlling the physical world, and a few other topics. Introduction to microprocessors as embedded devices. Emphasizes Input/Output techniques, interrupts, real-time operation, high-level code debugging and interfacing to various types of sensors and actuators.

 

SE 409 CLOUD COMPUTING

Credits:  3 (3,0,1)                            Prerequisite:    CS 331, SE 322

This course will give students a theoretical foundation and hands-on experience with the various technologies of the cloud computing paradigm. The course will cover topics related to cloud infrastructure and software stack, programming models, underlying distributed storage layers, as well as Virtualization. Students will also be exposed to various cloud frameworks and libraries.

 

SE 411 SOFTWARE CONSTRUCTION

Credits:  3 (3,0,1)                            Prerequisite:       SE 401

 

This course will provide students with an in-depth study of software construction. Topics include basic theory of grammars and parsing, use of parser generators, software construction fundamentals (minimizing complexity, anticipating change, constructing for verification and standards in construction), managing construction (construction models, construction planning and construction measurement), practical considerations (construction design, construction languages, coding, construction testing, reuse, construction quality, configuration management, security, automation, and integration), and techniques for handling concurrency and inter-process communication.

 

SE 413 SOFTWARE SYSTEM MODELLING

Credits:  3 (3,0,1)                            Prerequisite:        SE 322

This course examines the underlying concepts and latest topics in software models. This course considers many of the standard models for representing sequential and concurrent systems, such as state machines, algebras, and traces. It shows how different logics can be used to specify properties of software systems, such as functional correctness, deadlock freedom, and internal consistency. Concepts such as composition mechanisms, abstraction relations, invariants, non-determinism, inductive definitions and de-notational descriptions are recurrent themes throughout the course. This course provides the formal foundations for the other core courses. Notations are not emphasized, although some are introduced for concreteness. Examples are drawn from software applications.

 

 

SE 415 GROUP DYNAMICS AND PROFESSIONAL PRACTICE

Credits:  3 (3,0,1)                            Prerequisite:       SE 322

This course contributes to the domain of Group Dynamics (GD) in Software Engineering (SE). Student will learn how to identify the Group Dynamics (GDs) within a traditional and global software development environment.  It also introduces the SE Professional Practice as one of the fifteen knowledge areas of Software Engineering Body of Knowledge (SWEBOK) which states that SE professional practice is concerned with the knowledge, skills, and attitudes that software engineers must possess to practice SE in a professional, responsible, and ethical manner. This course covers issues related with professionalism, GDs, psychology and communication skills.

 

SE 417 AGENT BASED SOFTWARE ENGINEERING

Credits:  3 (3,0,1)                            Prerequisite:       SE 322

This course begins with an overview of the agent systems and software agents. Then it focuses on agent system architecture and infrastructure from a software engineering viewpoint, including: requirements for agent-based systems, modeling and design of agent-based systems, development process for agent-based systems. Topics such as agent architecture, communication, knowledge sharing, computing and uncertainty management are discussed. Studying society of agents and models of agency follows. Finally, a perspective on a methodology for agent-oriented software engineering and standards are presented.

 

SE 420 AGILE SOFTWARE ENGINEERING

Credits:  3 (3,0,1)                            Prerequisite:       Senior level

This course is an introductory course to agile software development methodologies. It explores theory, tools, and techniques for the practices of the agile approach. Students will gain hands-on experiences in agile software development through projects dealing with various aspects of agile development.

 

SE 421 SOFTWARE METRICS

Credits:  3 (3,0,1)                            Prerequisite:     Senior Level

This course covers concepts of the pervasive system attributes: reliability, efficiency, maintainability, reusability, etc., software quality management processes, software complexity and measures, software process measures, product measures and resource measure, validation of software measures, software measures and measurement theory, measuring, monitoring and controlling reliability, and software quality tools.

 

SE 422 SOFTWARE MAINTENANCE AND EVOLUTION

Credits:  3 (3,0,1)                            Prerequisite:       SE 401

This course provides students with a common understanding of software maintenance principles and software evolution. Key issues in software maintenance, maintenance process, techniques for maintenance, software maintenance tools, maintenance and Reengineering, reverse engineering, and refactoring.

 

SE 423 SOFTWARE ENGINEERING PROJECT MANAGEMENT

Credits:  3 (3,0,1)                            Prerequisite:      Junior Level

This course covers the main knowledge areas of project management (time, cost, quality, scope, risk, human resources, communications, etc.) by focusing on software projects. It also covers project planning, cost estimation, earned-value analysis techniques and scheduling, project management tools, factors influencing productivity and success, productivity metrics, analysis of options, risk management and dynamic adjusting of project plans, planning for change, management of expectations, software contracts and intellectual property, approaches to maintenance and long-term software development, standards in project management, such as ISO10006, ISO12207, along with CMM model will be also discussed. Case studies of real industrial projects will be discussed.

 

SE 430 SOFTWARE PROCESSES & PROCESS IMPROVEMENTS

Credits:  3 (3,0,1)                            Prerequisite:      SE 401

 

Developing reliable software on time and budget is a challenging issue for many organizations. A software process improvement focus offers the organization a better chance for success. In this course, software process improvement methods, models and techniques will be studied with a focus on software development practice. Topics that are covered in the course range from how to assess software development organizations capability to how an organization can take advantage of change artistry.

 

 

SE 436 SERVICE ORIENTED ARCHITECTURES

Credits:  3 (3,0,1)                            Prerequisite:      SE 322

This courses covers service oriented architectures. The main purpose of this course is to introduce the major concepts and technologies relating to service oriented architectures. This includes the core architecture, main principles of service orientation, service oriented analysis, service oriented design, and business process design.

 

SE 444 FORMAL METHODS AND MODELS IN SOFTWARE

Credits:  3 (3,0,1)                            Prerequisite:       Senior Level

This course is an introduction to the use of formal methods for the specification, design, and automatic analysis of software systems. A variety of specification notations such as propositional and predicate logic, UML/OCL, temporal logic are presented.  In addition, the course covers the application of analysis techniques including theorem proving, constraint checking, model checking using existing commercial and research tools.

 

SE 445 REAL-TIME SOFTWARE SYSTEMS

Credits:  3 (3,0,1)                            Prerequisite:       CS 330

This course focuses on practical development and engineering approach issues of real-time software. It assumes a reasonable proficiency in at least one programming language (C, C++, Java, or others) and a basic understanding of the fundamental concept of object orientation. The course emphasizes architectural analysis rather than programming. Topics include: architectural aspects, scheduling and synchronization, design patterns for real-time software, and aspects of software verification and model checking.

 

SE 450 DESIGN PATTERNS

Credits:  3 (3,0,1)                            Prerequisite:       SE 322

This course provides an in-depth view of design patterns. The course is suitable for software architects and developers who are already well-versed in software design. In addition, this course will offer continuous opportunities for learning the most advanced features of the object oriented languages and understanding some principles behind the design of its fundamental libraries.

 

SE 453 Software Security Architecture

Credits:  3 (2,0,2)                             Prerequisites:      SE 353

This course will study architectural patterns for integrating security into software such as web applications. The course will cover several topics include: an overview of software security; integration of authentication, access control, and auditing into software; programming with symmetric-key and asymmetric-key cryptography, including key distribution and key management, use of certificates, and SSL/TLS; security mechanisms in modern runtime environments, e.g., code signing, code verification, access control, and security policies. Students will get hands-on experience designing and implementing secure software.

 

SE 465 ENTERPRISE ARCHITECTURES

Credits:  3 (3,0,1)                            Prerequisite:      SE 322

This course focuses on the analysis and design of an enterprise in its current and future states from a strategy, business and technology perspective. This course provides an exposure to the foundational concepts of enterprise architecture. The course will provide students with the foundational knowledge needed to understand how EA serves to integrate strategic, business, and technology planning methods, which support enterprise-wide information technology resource development and governance in the context of business requirements.

 

SE 477 ADVANCED BUSINESS PROCESS MANAGEMENT

Credits:  3 (3,0,1)                            Prerequisite:    SE 322 for SE students, Junior Level for CS students

Business Process Management (BPM) is a research field that focuses on improving performance by managing and optimizing its processes. This course addresses techniques and concepts required to map, implement, automate, and evaluate business processes. Components of BPM lifecycle will be discussed with emphasis on modeling, analysis and optimization of processes in a data-driven fashion. The course comprises concepts of Business Process Management such as Process modeling using BPMN, qualitative and quantitative analysis of processes models, Process Redesign and Automation. Additionally, the course focuses on introducing the importance of process mining into the discovery and improvements of processes.  Students learn the three basic steps of Process Mining: discovery of models from data, conformance analysis of the resulting models with data, and performance analytics.

 

SE 480 SOFTWARE ANALYTICS

Credits:  3 (3,0,1)                            Prerequisite:         Instructor consent

This course covers the application of selected statistical analysis, data mining, and machine learning techniques to the area of Software Engineering. These methods and techniques are used to conduct stakeholder analysis, mining software repositories, trace retrieval, bug prediction, recommender systems in Software Engineering domains, and software process improvement techniques. The course demonstrates how these techniques can be used to enhance project management and other software engineering activities in software intensive systems and provides students with hands-on experience using them on real project data.

 

SE 489 SELECTED TOPICS IN SOFTWARE ENGINEERING

Credits:  3 (3,0,1)                            Prerequisite:       Instructor consent

This course covers topics in the software engineering discipline not covered by other SE courses. Students are encouraged to propose topics for this course.

 

SE 492 Co-Op  [COOPERATIVE EDUCATION]

Credits:  10                        Prerequisite:     Department consent

The Co-Op is a career related professional program available to all Software Engineering students.  It is designed to help students build on skills already learned in the classroom and acquire new ones as well. Co-Op education is available to CCIS students who have accumulated the requisite number or more credits.  The Co-Op option counts for 10 credit hours (CRs) for practical onsite experience over a 7 month period, i.e. spanning one semester and a summer.

 

SE 495 EMERGING TOPICS IN SOFTWARE ENGINEERING

Credits:  3 (3,0,1)                            Prerequisite:      Instructor consent

This course covers topics in the computer science discipline that recently gained innovative attention in Computer Science.  Students are encouraged to propose topics for this course.

 

SE 499 SOFTWARE ENGINEERING CAPSTONE PROJECT

Credits:  10                        Prerequisite:      Instructor consent

Provides students, working in groups, with a significant project experience in which they can integrate much of the material they have learned in their program, including matters relating to requirements, design, human factors, professionalism, and project management. Students will develop a significant software system, employing knowledge gained from courses throughout the program. Includes development of requirements, design, implementation, and quality assurance. Students may follow any suitable process model, must pay attention to quality issues, and must manage the project themselves, following all appropriate project management techniques. Success of the project is determined in large part by whether students have adequately solved their customer's problem.


Appendix – Study plan follow-up maps