Required Area Courses

COMP 106 – Discrete Mathematics for Computer Science and Engineering
Credits: 3
Prerequisites:
An introductory course covering: Logic, formal reasoning, propositional logic, sets, growth of functions, algorithmic complexity, number theory, mathematical induction, combinatorics, recurrence, generating functions, relations, graphs, and models of computation.

COMP 131 – Introduction to Programming
Credits: 3
Prerequisites:
Introduction to imperative programming. Compiling and executing programs. Control statements: Conditional, branching and looping constructs. Methods and functions. Recursion. Basic algorithmic techniques. Arrays. Abstract Data Types, Classes, Objects. Inheritance. Strings and Characters. Iteration. Packages. Access and Visibility Control. Exceptions and Exception Handling. Files and Streams. Selected standard packages and utilities. Introduction to Graphical User Interfaces.

MATH 106 – Calculus I
Credits: 3
Prerequisites:
Limits and continuity; derivative and properties of differentiable functions; mean value theorems, Taylor’s formula, extreme values; indefinite integral and integral rules; Riemann integral and fundamental theorem of calculus; L’Hospital’s rule; improper integrals.

PHYS 101 – General Physics I
Credits: 4
Prerequisites:
Physical quantities; rectilinear motion; motion in two and three dimensions; Newton’s laws of motion; work and energy; momentum; conservation laws; collisions; rotational dynamics; gravitation; periodic motion; fluid motion.

MATH 107 – Introduction to Linear Algebra
Credits: 3
Prerequisites:
Vectors; Vectors; matrices and systems of linear equations; vector spaces; linear maps; orthogonality; algebra of complex numbers; eigenvalue problems.

MATH 203 – Multivariable Calculus
Credits: 3
Prerequisites: MATH 106 or CoI
Functions of several variables; partial differentiation; directional derivatives; exact differentials; multiple integrals and their applications; vector analysis; line and surface integrals; Green’s, Divergence and Stoke’s theorems.

PHYS 102 – General Physics II
Credits: 4
Prerequisites: PHYS 101 or CoI
Electric charge and electric field; Gauss’s law; electric potential; dielectrics; electric circuits; magnetic field and magnetic forces; sources of magnetic field; electromagnetic induction; electromagnetic waves.

COMP 132 – Advance Programming
Credits: 3
Prerequisites: COMP 131 or COMP 130 or CoI
Advanced programming techniques and large scale programming. Inheritance and Type Hierarchies. Polymorphism. Object-oriented Programming. Code reuse. Graphical User Interfaces. Advanced class and template libraries. Introduction to low-level languages. Pointers and references. Resource management: Dynamic storage allocation, memory management. Virtual functions.

COMP 200 – Structure and Interpretation of Computer Programs
Credits: 3
Prerequisites: COMP 106 or CoI
Introduction to core software engineering concepts. Control of complexity in large programming systems. Building abstractions with procedures and data. Modularity, objects and state. Machine models, compilers and interpreters. Concurrency.

MATH 204 – Differential Equations
Credits: 3
Prerequisites: MATH 107 or CoI
First order differential equations. Second order linear equations. Series solutions of ODE’s. The Laplace transform and applications. Systems of first order linear equations. Nonlinear equations and systems:existence, uniqueness and stability of solutions. Fourier series and partial differential equations.

CHEM 103 – General Chemistry
Credits: 4
Prerequisites:
Atomic and molecular structure, spectroscopy, stoichiometry, chemical thermodynamics, electrochemistry, structure and properties of materials.

ENGR 200 – Probability and Random Variables for Engineers
Credits: 3
Prerequisites:
Introduction to probability, sets, conditional probability, total probability theorem and Bayes rule; Independence, counting; Discrete random variables, functions of random variables, expectation, mean and variance; Continuous random variables, probability density functions, and cumulative distribution functions; Multiple random variables; Sums of random variables; Limit theorems; Covariance and correlation; Introduction to Stochastic Processes.

COMP 202 – Data Structures and Algorithms
Credits: 3
Prerequisites: COMP 106 and (COMP 131 or COMP 130) or CoI
Basic data structures, algorithms, and their computational complexity. List, stack, queue, priority queue, map, tree, balanced tree, hash table, heap, skip list, trie, graph. Basic search, selection, sorting, and graph algorithms. Recursion.

ELEC 204 – Digital Design
Credits: 4
Prerequisites:
Computer technology, digital hardware, boolean algebra, logic functions and gates, canonical forms, simplification of boolean functions, Karnaugh maps, number systems, conversions, complement arithmetic, adders, multiplexers, tri-state outputs, decoders, encoders, sequential logic, flip-flops, sequential circuit analysis, sequential circuit design, registers and counters, memory and programmable logic, central processing unit. A design project.

MBGE 200 – Introduction to Biology
Credits: 3
Prerequisites:
Principles of biochemistry; molecular and cell biology. General introduction to cell structure and function. Genetics, bioenergetics, anatomy and physiology; introduction to biotechnology.

COMP 291 – Summer Practice I
Credits: 0
Prerequisites: ACWR 101
A minimum of 20 working days of training in an industrial summer practice program after the completion of second year. The training is based on the contents of the “Summer Practice Guide Booklet” prepared by each engineering department. Students receive practical knowledge and hands-on experience in an industrial setting.

COMP 301 – Programming Language Concepts
Credits: 3
Prerequisites: COMP 200 or CoI
Programming languages (i.e. C++, Java, Ada, Lisp, ML, Prolog), concepts and paradigms. Syntax, semantics. Abstraction, encapsulation, type systems, binding, run-time storage, sequencers, concurrency, control. Providing examples from functional, object-oriented and logic programming paradigms.

COMP 302 – Software Engineering
Credits: 3
Prerequisites: (COMP 132 and COMP 202) or CoI
Review of methods and tools used in software development. Object oriented design and open software architectures. Requirements analysis, design, implementation, testing, maintenance and management. Engineering applications.

COMP 303 – Computer Architecture
Credits: 3
Prerequisites: ELEC 204 or CoI
Hardware organization of computers. Computer components and their functions. Instruction sets, instruction formats and addressing modes. Pipelining and pipeline hazards. Instruction level parallelism. Assembly and machine language. Data and control paths. Computer arithmetic. Floating point representation. Memory hierarchy, cache organization and virtual memory. Parallel architectures.

COMP 304 – Operating Systems
Credits: 3
Prerequisites: (COMP 132 and COMP 303) or CoI
Introduction to operating systems concepts, process management, memory management, virtual memory, input-output and device management, file systems, job scheduling, threads, process synchronization, deadlocks, interrupt structures, case studies of operating systems.

COMP 305 – Algorithms and Complexity
Credits: 3
Prerequisites: COMP 202 or CoI
Advanced topics in algorithms, and their computational complexity. Amortized complexity analysis. Randomized algorithms. Greedy algorithms. Dynamic programming. Linear programming. Advanced graph algorithms. Turing machines and models of computation. NP-completeness reductions.

COMP 391 – Summer Practice II
Credits: 0
Prerequisites: COMP 291 and ACWR 106-102-103-104-105-107
A minimum of 20 working days of training in an industrial summer practice program after the completion of third year. The training is based on the contents of the “Summer Practice Guide Booklet” prepared by each engineering department. Students receive practical knowledge and hands-on experience in an industrial setting.

COMP 491 – Computer Engineering Design
Credits: 3
Prerequisites: (COMP 202 and COMP 302) or CoI
A capstone design course where students apply engineering and science knowledge in a computer engineering design project. Development, design, implementation and management of a project in teams under realistic constraints and conditions. Emphasis on communication, teamwork and presentation skills.