CS 211 - FUNDAMENTALS OF PROGRAMMING (4, 3-1). This course equips students with the basic skills and knowledge of computer programming with the C/C++ programming language. Students will first learn about basic data types, storage classes, block structures, data hiding and data initialization. They will then move on with topics on pointers and storage allocation as well as arrays and dynamic memory allocation. Later in the course, students will learn how to write functions or subroutines with the emphasis on command line arguments, environment variables, recursion and reentrancy. By the end of the course, students will be introduced to structures and file structures: how to define and declare structures, how to access members, how to pass a structure to a function, etc. Prerequisite: N/A
MTH 254 – DISCRETE MATHEMATICS & APPLICATIONS (3, 2+1). Discrete mathematics is a branch of mathematics that studies discrete objects and it is a required subject for Information Technology students. This course not only gives students an understanding and application for the problems encountered in the foundation of basic discrete structures such as sets, relations, graphs, but also helps students create conditions to understand storing and processing data in computers where discrete progresses are the essentials.
CMU-CS 252 – INTRODUCTION TO NETWORK & TELECOMMUNICATIONS TECHNOLOGY (3). This course will focus on the following key issues: Understand the basic concepts of computer network technology. The ability to design, implement, operate and evaluate a network system to meet desired needs and analyze the local and global impact of computer network on individuals, organizations, society and all requirements of the curriculum. Prerequisite: N/A.
CMU-CS 303 - FUNDAMENTALS OF COMPUTING 1 (3, 2-1). This course introduces basic programming using the JAVA programming language with object-oriented programming principles. There will be a revisit to basic concepts of programming but the emphasis is placed on object-oriented programming principles, the use of some of the common Java libraries from the core Java APIs and event-driven programming. The purpose is to help students develop programming skills and form object-oriented thinking which serves as the foundation for becoming a software engineer. Prerequisite: N/A.
CMU-CS 316 - FUNDAMENTALS OF COMPUTING 2 (3). This course introduces the student to fundamental data structures & algorithms and the tradeoffs between different implementations of the following abstractions of array lists, linked lists, stacks, queues, heaps, trees, binary search trees and balanced trees. This course also introduces algorithm designs including searching, sorting, and recursion as well as the basic performance and analysis (i.e., the best case, worse case, average case, linear and non-linear algorithms and their impact on performance). Prerequisite: CMU-CS 303.
CMU-SE 214 - REQUIREMENTS ENGINEERING (3). The course presents basic concepts and techniques in requirements engineering. Students will learn to systematically establish, define and manage the requirements of software systems, from technical, organizational and management perspectives. The course also focuses on various techniques of elicitation, analysis, specification, documentation, validation, verification and requirement change management in software development. Prerequisite: Sophomore status or above.
CMU-CS 311– OBJECT ORIENTED PROGRAMMING AND C++ (Advanced Concepts in Computing) (4, 3+1). This course provides in-depth coverage of object-oriented programming principles and techniques using C++. Topics include classes, overloading, data abstraction, information hiding, encapsulation, inheritance, polymorphism, file processing, templates, exceptions, container classes, and low-level language features. The course also covers GUI and the C++11 language standard. Prerequisite: CS 211.
CMU-SE 252 – COMPUTER SCIENCE FOR PRACTICING ENGINEERS (Software Construction)(3). This course introduces the concepts which are related to the design and analysis of algorithms. It covers in detail algorithm complexity such as greedy strategies, divide and conquer techniques, dynamic programming, and approximation algorithms. It also covers some abstract data types and their attributes. Prerequisite: CMU-CS 316.
CMU-CS 462 – SOFTWARE MEASUREMENT AND ANALYSIS (3). This course provides the basic skills needed to define, capture and analyze software processes and product measurements in support of management information needs. Including: Basic of measurement, data analysis and reporting, software project measurement and analysis, the relationship between metrics and project processes, the relationship between metrics and product quality, measuring and managing risk, the software project measurement process, defining software project and product measures, capturing and storing software project and product measures, data analysis techniques, status reporting, collecting and using information for historical purposes, ROI (return of investment) associated with software project measurement and analysis. Prerequisite: CMU-IS 432.
CMU-IS 432 - SOFTWARE PROJECT MANAGEMENT (3). This course provides engineering students with a comprehensive understanding of how to plan, optimize and efficiently manage projects (or tasks) to implement products, services or developments. This includes building the structures, processes, components and linkages in a team for successful project delivery within schedule, budget and quality requirements. Prerequisite: Sophomore status or above.
CMU-SE 303 - SOFTWARE TESTING (Verification & Validation) (3). Major topics of this course include practical software testing goals and approaches to testing software through all phases of the Software Testing Lifecycle. Practical testing tools are discussed and used in assignment work. In particular, students learn how to apply the tools that come in open-source package in order to gain a solid understanding of how testing is done in practice. The course also covers the difference between ideal testing practice and real-life scenarios where standards are not always given appropriate levels of importance. Prerequisite: CMU-CS 303.
IS 301 – DATABASE SYSTEM (3). This course presents the database concept with extensive coverage on data modeling, database design, data definition language, relational algebra, and SQL. The course also covers relational design principles based on dependencies and normal forms (Boyce-Codd Normal Form: 1NF, 2NF, 3NF). Students will have the chance to practice with SQL 2000, T-SQL, indexes, views, and constraints in a small database design project. Prerequisite: CS 101.
CMU-IS 401 - INFORMATION SYSTEM APPLICATIONS (3). The course aims to provide students with knowledge about the Relational DataBase Management Systems such as data structure, file organization, the Structured Query Language (SQL), transaction management, concurrent access management mechanisms, security and data recovery after an incident, optimization as well as questions of organizational structure and access methods. Prerequisite: IS 301.
IS 384 - E-COMMERCE TECHNOLOGIES (ASP.NET) (3). In this course, students will learn about major technologies for ecommerce such as ASP.NET (C#), CSS, JavaScript, XML and SQL Server. Students, in teams of 3 to 5 members, will also engage in a full-scale group project to develop an ecommerce application of their own design. A brief introduction to GUI design and database optimization for web applications is also given in this course. Prerequisite: CS 211.
CMU-SE 433 - SOFTWARE PROCESS & QUALITY MANAGEMENT (3). The course is designed to provide students with the basic concepts of process justification, identification, implementation, and software development, the different process improvement models, and how organizations can be evaluated for adherence to high quality processes that generate high quality products. The course offers an understanding of how to evaluate, instantiate, and analyze a development process in an organization. Prerequisite: CMU-IS 432.
CMU-CS 445 - SYSTEM INTEGRATION PRACTICES (3). This course gives students an understanding about many of the problems encountered when integrating two or more applications into a single system following the System Integration Life cycle. Based on the case studies, students can recognize the challenges of integrating different applications with different database schemas and different security services. Students also learn when it is appropriate to apply integration models and middleware technologies. Prerequisite: CS 211, CMU-CS 316.
CMU-SE 403 – SOFTWARE ARCHITECTURE AND DESIGN (4). This course is targeted at those practicing professionals who design, develop, and/or manage the construction of software-intensive systems. It provides an overview of architecture design for practicing engineers and provides insights on the latest thinking in architecture design. The topics such as “Why architecture design is important, what is architecture, how to design and do documentation, how to create architecture, how to evaluate the architecture and what is its role in system development” will be discussed in the class. Students should have prior experience in the development of software-intensive systems and some familiarity with modern software engineering concepts. Prerequisite: CMU-CS 311, CMU-SE 214.
CMU-CS 246 – APPLICATION DEVELOPMENT PRACTICES (3). In this course, students will play a variety of roles in the software industry, including: team leader, project manager, and quality assurance manager. With such roles, students will learn to know-how each position in the software industry. Also, this course helps students to deal with critical issues in the process of working as technical review and configuration management. Prerequisite: N/A.
CR 424 – MOBILE APPLICATION DEVELOPMENT (3). This course introduces students to the development of mobile apps (i.e., ubiquitous computing applications) on major platforms. The course includes hands-on tutorials with screenshot instructions to guide students through the step-by-step construction of mobile apps on Google Android, Apple iOS, and Windows Phone. Featured topics for in-class discussion are installation and setup, “best practices” in mobile programming, mobile operating systems of Android Studio, Apple iOS, Microsoft Windows Phone, and cross-platform development with Phone-Gap or Unity. Prerequisite: CMU-CS 303.
CS 366 – L.A.M.P (LINUX, APACHE, MYSQL, PHP) (2). This course covers basic contents of Linux, Apache, MySQL, PHP and their combination in order to create a website management system, which is usually referred to as L.A.M.P. Students will be taught about advanced programming techniques with PHP for the development of full-scale client/server applications. Besides, they will learn basic operations and scripting with mySQL. Prerequisite: CMU-CS 303, IS 301.
CS 414 – WINFORM PROGRAMMING: VB.NET/ C#.NET (3). This course provides knowledge of Windows form programing, object-oriented programing with C#.NET, and database access with ADO.NET. It helps students analyze real world problems and develop Windows form applications in an object-oriented manner. The objective of this course is to help students to develop the skills of Windows Form application programming and database connectivity a variety of DBMS, especially in developing management applications. Prerequisite: CMU-CS 303, IS 301
CMU-CS 447 - CDIO PROJECT2 (1). This course provides students with an education that stresses engineering fundamentals set in the context of Conceiving – Designing – Implementing - Operating real-world systems, processes, and products. Prerequisite: CMU-CS 297.
CMU-SE 450 - CAPSTONE PROJECT FOR SOFTWARE ENGINEERING 1 (3). This Capstone project focuses on a simulation project. It emphasizes team collaboration and application of modern engineering approaches to software construction. The main objective is the development by each team of an original, industry-strength and system-intensive product. The teams report on their project’s progress by giving presentations and submitting deliverables related to the project. The teams deliver and present project parts at the following stages of project development: (1) topic proposal (concept), (2) software specification (requirements), (3) design (model), and (4) implemented software/system (in-progress & final product/service). At the beginning of the semester, the teams set up a communication protocol between team and its mentor(s), which will be updated regularly to reflect the projects’ progress and team meetings. At the end of the semester, there is a Senior Projects Defense with project demos, posters, and presentations. Prerequisite: CMU-SE 214, CMU-IS 432, CMU-CS 316, CMU-SE 303 or CMU-CS462.
CMU-SE 451 – CAPSTONE PROJECT FOR SOFTWARE ENGINEERING 2 (3). This capstone course focuses on a real-world project. It emphasizes team collaboration and application of modern engineering approaches to software construction. The development by each team of an original, industry-strength software-intensive product is the main objective of the course. The teams will report on their project’s progress by giving presentations and submitting deliverables related to the project. The teams will deliver and present project parts at the following stages of project development: topic proposal (concept), software specification (requirements), design (model), and implemented software (in-progress & final product). At the beginning of the semester the teams will set up a communication protocol between team and mentor, which will be updated regularly to reflect the projects’ progress and team meeting. At the end of the semester there will be a Capstone Projects Defense with project demos, posters, and presentations. Prerequisite: CMU-SE 450.