*UE 1 must be a science elective due to ABET requirements
Course Descriptions – I - English: All compulsory courses offered by the department of the program
Type the catalog course description of each course in English in the following order: course content, course credits, prerequisites, Abbreviated Title, Category of the course, teaching language, and keywords. The information supplied will be copied and pasted to the catalog.
Course code: Replace CODEXXX with the course code
Course title: Replace Full Course Title with the course title.
Course Outline: Replace Course outline with statements of the course outline. Avoid using multiple paragraphs. Do not keep the text “Course outline” as a heading.
Credits: Replace L, L, T and X with corresponding numbers for lecture, lab, tutorial and total course credit, respectively.
ECTS: Write total ECTS credits
Prerequisites: Delete “None” and replace XXXXXX with the corresponding course code.
Course Category:XXXXXXXX with any of “University Core”, “Faculty / School Core”, “Area Core”, “Area Elective”, or “University Elective”
Abbreviated title: This is going to be used in preparation of transcripts or registration forms. Replace XXXXXXXXXXXXXXX with a shorter version of the full title.
Teaching language: Replace XXXXX with the teaching language
Keywords: Replace XXXXXX, XXXXXX with words other than the ones available in the title and course outline which helps to identify the course.
The total text length should not exceed 2000 characters.
1.
CMSE100 Introduction to Software Engineering
A series of seminars are held in current topics and areas of specialization in Software Engineering. Speakers are invited from different departments of EMU including Computer Engineering Department or other International Universities, Industry and Consulting firms, to deliver seminars in all aspects of engineering that are not normally covered in the lecture courses.
Abbreviated Title: Introduction to Software Engineering Category: Area Core Course Teaching Language: English
Keywords: Software Engineering
2.
CMPE101 Foundations of Computer Engineering
This course introduces the student to the fundamental concepts of the computer engineering discipline. Topics covered include: Computers and information processing -notion of computers, concepts of data and information, applications of computers, history of computing. Computer hardware -CPU, memory, input/output interface, secondary storage, ports, types of computer systems, computer software -system software, utilities, application software, data communication, an overview of operating systems. General Problem Solving Concepts: basic data types, constants and variables, basic operators and expressions, algorithms, pseudo codes, and flow charts, sequential, and conditional problem solving (IF statements and CASE logic), looping (WHILE/WHILE-END, REPEAT-UNTIL, FOR structures), formatted output, examples in C programming language.
Abbreviated Title: Fundamentals of Software Engineering Category: Area Core Course Teaching Language: English
Keywords: Software Engineering
5.
CMSE222 Introduction to Computer Organization
Simplification of Boolean functions. Combinatorial logic. Synchronous sequential logic, registers, and counters. Machine language instructions: the MIPS approach. Computer arithmetic. The processing unit: data path and control.
Abbreviated Title: Introduction to Computer Organization Category: Area Core Course Teaching Language: English
Keywords: Computer Organization
6.
CMPE211 Object-Oriented Programming
Basics of C++ and Control structures. Program design, Object-Oriented programming and its specific features. Layout of a simple C++ program (elementary C++ programming. Fundamental types, scope. Overview of selection and iteration structures of C and C++ languages. Examples of C++ programs. Functions and Arrays. Review of functions and arrays. Prototypes (declarations), function definition, function overloading, inline functions, scope resolution operator (::), call-by-value, call-by-reference (reference parameters), default arguments, array declarations, operations on arrays, using arrays as function arguments. Pointers, C strings and C++ strings. Pointer variables, declaration and initialization. Use of pointers in call-by-reference function calls, returning a reference, arrays of pointers, pointers to arrays, pointers to functions, dynamic memory allocation with C++ operators new and delete, C-strings, input/output operations, standard C-string functions, formatted and unformatted input /output, C++ string type (the standard string class). Classes and Data abstraction. Structure definition, accessing members of structures, class declarations, constructors, constructor initialization lists. Class destructor, member access specifiers public and private, const member functions, friend functions and classes, static data and function members. Operator Overloading. Fundamentals and restrictions of operator overloading, this pointer, overloading unary and binary operators. Composition and Inheritance. Base classes and derived classes, protected class members, virtual functions and polymorphism, virtual destructors, private access vs. protected access, abstract base classes. Revision of the material discussed in the course.
Abbreviated Title: Object-Oriented Programming Category: Area Core Course Teaching Language: English
Keywords: object-oriented programming
Department offering the course: Computer Engineering
7.
CMPE231 Data Structures
Data types. Binary and decimal Integers. Floating point number. Pointers. Arrays. Structures. Array of structures. Self-referential structures. Dynamic memory allocation. Concept of Abstract Data Type (ADT). Memory allocation of arrays. Linked lists (singly linked, doubly linked, circular). Dynamic implementation of lists. The stack. Infix, postfix, and prefix notations. Applications of the stack: Infix-to-postfix conversion, evaluation of postfix expressions. Recursion. Binary search. The towers of Hanoi problem. Queues. Trees and their applications. Binary tree representations. Binary tree traversals. Binary search trees (definition, operations). Heaps
Functional, non-functional and domain requirements. User and system requirements. Feasibility study. Estimation techniques. Languages and models for representing requirements. Performance, reliability, availability, safety, and security issues. Requirements documentation standards. Requirements management: handling requirements changes.
Abbreviated Title: Software Design Category: Area Core Course Teaching Language: English
Keywords: Software design, software specification
11.
CMSE326 Software Quality Assurance and Testing
Software metrics. Quality planning and quality control. Inspections and formal technical reviews. Black-box and white-box testing, problem analysis and reporting techniques. Verification and validation techniques. Process and product quality assessment. Process measurement. Software quality assurance standards.
Abbreviated Title: Testing Category: Area Core Course Teaching Language: English
Keywords: software testing, quality assurance
12.
CMSE346 Computer Networks and Communication
This course addresses the general principles of computer networks and communication with emphasis on the software aspects of networking. In the study of the multilayered model, it begins with application level and works its way down towards the lower layers. Topics include: Internet 1 and Internet applications, transport protocols, switching and routing, link layer and LANs. Software support for networks.
Information security requirements, security threats, attacks, and methods providing information protection, discretionary and mandatory access models. Malicious software. Symmetric and asymmetric cryptographic methods, DES, AES, RSA. Authentication, digital signature, certificates, one-time passwords, hash functions. Practical aspects of information security in operating systems, databases, network applications.
Abbreviated Title: Security Category: Area Core Course Teaching Language: English
Keywords: software security, information protection
14.
CMPE318 Principles of Programming Languages
Evolution of programming languages and concepts. Syntax and semantics of programming languages. Context-free grammars. Lexical analysis. Syntax analysis. Top-down vs. bottom-up parsing. LR parsing tables. Names, scope and lifetime. Expressions. Statements. Subprogram linkage. Stack implementation of subprogram calls. Parameter passing methods. Object oriented concepts. Implementation of inheritance: virtual method tables. Concurrency. Exception handling. Functional or Logic programming.
Abbreviated Title: Programming Languages Category: Area Core Course Teaching Language: English
Keywords: programming languages
Department offering the course: Computer Engineering
15.
CMPE354 Database Management Systems
This course introduces the student to the fundamentals of database management. Topics covered include: the Entity-Relationship model; the Relational model and its mathematical foundations; most important features of Structured Query Language (including basic structure, aggregate functions, nested queries, index definition, stored procedures and functions, views, database modification, domain constraints, assertions, triggers, transaction definition, data definition language, granting privileges, security), query languages Datalog and QBE; Object-Oriented and Object-Relational databases; design principles of Relational databases (normal forms, functional dependencies, decomposition).
Abbreviated Title: Analysis of Algorithms Category: Area Core Course Teaching Language: English
Keywords: analysis of algorithms
Department offering the course: Computer Engineering
17.
CMSE400 Summer Practice
As a part of the fulfillment of the graduation requirements, all students must complete 40 work days of summer training after the second and/or third year, during summer vacations. The summer training should be carried out in accordance with the rules and regulations set by the department. (3rd/4th year standing)
Abbreviated Title: Summer Practice Category: Faculty Core Course Teaching Language: English
Keywords: summer practice
18.
CMSE405 Graduation Project I/II
4th academic year students in Software Engineering are required to prepare and present a project under the supervision of a faculty member of the Department. Each student has to prepare a separate (individual) project. The purpose of the project is to develop an understanding of independent research by studying a particular Software Engineering topic. It is an extended exercise in the professional application of the skills and experience gained in the undergraduate program. Topics will be chosen in consultation with faculty members. (4th year standing)
Abbreviated Title: Graduation Project I/II Category: Area Core Course Teaching Language: English
Keywords: capstone design
19.
CMSE406 Graduation Project II/II
4th academic year students in Software Engineering are required to prepare and present a project under the supervision of a faculty member of the Department. Each student has to prepare a separate (individual) project. The purpose of the project is to develop an understanding of independent research by studying a particular Software Engineering topic. It is an extended exercise in the professional application of the skills and experience gained in the undergraduate program. Topics will be chosen in consultation with faculty members.
Abbreviated Title: Software Process and Management Category: Area Core Course Teaching Language: English
Keywords: software process management
21.
CMPE423 Embedded System Design
The objective of the course is to introduce the concept of Harvard + RISC architecture microcontrollers and design of embedded computing systems on typical applications including interrupts, timers, LCD and LED displays, keypads, a/d converters, rotary coders, stepper motors, serial and parallel communication interfacing. The design applications are introduced on a very widely used typical 16-bit embedded microcontroller unit, PIC18F452. The scope of the course is the simple, distinct PIC18F452 embedded system design with the applications in C and RISC assembly programming. The design/theory scale of the course is around 60/40.
Abbreviated Title: Embedded Design Category: Area Core Course Teaching Language: English
Keywords: embedded systems
Department offering the course: Computer Engineering
22.
CMPE471 Automata Theory
Mathematical preliminaries and basic concepts. Strings, Languages and Grammars. Chomsky hierarchy of grammars. Deterministic and nondeterministic finite automata. Equivalence of deterministic and nondeterministic finite automata. Minimization of finite automata. Regular grammars and regular expressions. Pushdown automata. Context free grammars. Chomsky normal form. Greibach normal form. Correspondence of pushdown automata and context free grammars. Introduction to Parsing.
Abbreviated Title: Automata Theory Category: Area Core Course Teaching Language: English
Keywords: automata theory
Department offering the course: Computer Engineering
Course Descriptions – II - English: All area elective courses offered by the department of the program
1.
CMSE412 Formal Specification of Software Systems
Review of mathematical foundations for formal methods. Formal languages and techniques for software system specification and design. Analysis of software specifications and designs. Verification of consistency with requirements. Reliability validation. Automated program and design transformation.
Abbreviated Title: Formal Specification Category: Area ElectiveCourse Teaching Language: English
Keywords: formal software specification
2.
CMSE414 Software Testing
Testing techniques and principles. Black-box and white-box testing. Testing strategies: Unit testing, boundary testing and integration testing. State based testing, configuration testing, compatibility testing, web site testing. Alpha, beta, and acceptance testing. Test coverage criteria. Testing tools. Developing effective test plans. Problem reporting, tracking, and analysis.
Abbreviated Title: Testing Category: Area ElectiveCourse Teaching Language: English
Keywords: Software testing
3.
CMSE415 Systems Analysis
Life cycle phases: requirements determination, logical design, physical design, and implementation planning; interpersonal skills, interviewing, presentation skills; group dynamics; risk and feasibility analysis; group-based approaches: project management, joint application development (JAD), and structured walkthroughs; structured versus object oriented methodologies; RAD, prototyping; database design; software package evaluation, global and inter-organizational issues and system integration.
Abbreviated Title: Systems Analysis Category: Area ElectiveCourse Teaching Language: English
Keywords: Systems analysis
4.
CMSE421 Software Construction
General principles and techniques for disciplined low-level software design. BNF and basic theory of grammars and parsing. Use of parser generators. Basics of language and protocol design. Formal languages. State-transition and table-based software design. Formal methods for software construction. Techniques for handling concurrency and inter-process communication. Techniques for designing numerical software. Tools for model-driven construction. Introduction to Middleware. Hot-spot analysis and performance tuning.
Abbreviated Title: Software Construction Category: Area ElectiveCourse Teaching Language: English
Keywords: Software construction, formal languages
5.
CMSE422 Software Project Management
Project planning, cost estimation and scheduling. Project management tools. Factors influencing productivity and success. Productivity metrics. Analysis of options and risks. Planning for change. Management of expectations. Release and configuration management. Software process standards and process implementation. Software contracts and intellectual property. Approaches to maintenance and long-term software development. Case studies of real industrial projects.
Detailed software design and construction in depth. In-depth coverage of design patterns and refactoring. Introduction to formal approaches to design. Analysis of designs based on internal quality criteria. Performance and maintainability improvement. Reverse engineering. Disciplined approaches to design change.
Abbreviated Title: Low-Level Design of Software Category: Area ElectiveCourse Teaching Language: English
Keywords: software design
7.
CMSE439 Human/Computer Interaction
Human factors in computing. Cognitive modeling, user interfaces. Usability engineering. Task analysis, user-centered design, and prototyping. Design of windows, menus, and commands. Voice and natural language I/O. Multimedia systems. User interface architectures and API’s. (This course involves case studies and a term project.
Abbreviated Title: Human/Computer Interaction Category: Area ElectiveCourse Teaching Language: English
Keywords: human-computer interaction
8.
CMSE491 Selected Topics in Software Engineering I
This course is to be arranged as seminar course. Students and faculty members participate in studying recent articles published on the research interests of the department.
Abbreviated Title: Software Engineering I Category: Area ElectiveCourse Teaching Language: English
Keywords: software engineering
9.
CMSE492 Selected Topics in Software Engineering II
This course is to be arranged as seminar course. Students and faculty members participate in studying recent articles published on the research interests of the department.