Sunteți pe pagina 1din 5


VTE 222 Business Communication

Concepts and definitions. Communication terminologies. Levels and
concepts and definitions. Communication process and frame reference.
Constituents of business communication process. Tools of communications.
Importance of business professional communication. Communication
problems and barriers. Business correspondence.

(2 Units)
CS 201 Computer Programming 1
An introduction to the process of program design and analysis using the Java
programming language for students who have NO prior programming
experience. Topics to be covered include basic data types and their operators,
I/O, control structures (selection, loops), classes (including methods and
fields), arrays, and simple sorting and searching algorithms. students must
achieve a C or better in order to use this course to satisfy the pre-requisite for
any subsequent Computer Science course.
(2 Units)
CS 202 Computer Programming II
An introduction to the process of program design and analysis using the Java
programming language for students who have prior programming experience,
but are not adequately prepared for subsequent courses. Topics include review
of basic data types, control structures (selection, loops), functions and
parameters, as well as coverage of classes (including methods and fields),
arrays, and simple sorting and searching algorithms. NOTE: students must
achieve a C or better in order to use this course to satisfy the pre-requisite for
any subsequent Computer Science course or placement.
(2 Units)
CS 351 Data Structures
A continuation of the process of program design and analysis for students with
some prior programming experience (functions, loops, and arrays, not
necessarily in Java). The course reinforces object-oriented programming
techniques in Java and covers data aggregates, data structures (e.g., linked
lists, stacks, queues, trees, and graphs), and an introduction to the analysis of
algorithms that operate on those data structures.
(2 Units)
CS 454 Artificial intelligence
This course is about the theory and practice of Artificial Intelligence. We will
study modern techniques for computers to represent task-relevant information
and make intelligent (i.e. satisficing or optimal) decisions towards the
achievement of goals. The search and problem solving methods are applicable
throughout a large range of industrial, civil, medical, financial, robotic, and
information systems. We will investigate questions about AI systems such as:
how to represent knowledge, how to effectively generate appropriate
sequences of actions and how to search among alternatives to find optimal or
near-optimal solutions. We will also explore how to deal with uncertainty in
the world, how to learn from experience, and how to learn decision rules from
data. We expect that by the end of the course students will have a thorough
understanding of the algorithmic foundations of AI, how probability and AI
are closely interrelated, and how automated agents learn. We also expect

students to acquire a strong appreciation of the big-picture aspects of

developing fully autonomous intelligent agents. Other lectures will introduce
additional aspects of AI, including natural language processing, web-based
search engines, industrial applications, autonomous robotics, and
economic/game-theoretic decision making.
(2 Units)
CS 332 Operating System I
Operating System Design and Implementation is a rigorous hands-on
introduction to the principles and practice of operating systems. The core
experience is writing a small Unix-inspired OS kernel, in C with some x86
assembly language, which runs on a PC hardware simulator (and on actual PC
hardware if you wish). Work is done in two-person teams, and team
programming skills (source control, modularity, documentation) are
emphasized. The size and scope of the programming assignments typically
result in students significantly developing their design, implementation, and
debugging abilities. Core concepts include the process model, virtual memory,
threads, synchronization, and deadlock; the course also surveys higher-level
OS topics including file systems, interprocess communication, networking,
and security. Students must be able to write a storage allocator in C, use a
debugger, understand 2's-complement arithmetic, and translate between C and
x86 assembly language. The instructor may require you to complete a skills
assessment exercise before the first week of the semester in order to remain
registered in the class.
(2 Units)

CS 331 Compiler Construction I

This course covers the design and implementation of compiler and run-time
systems for high-level languages, and examines the interaction between
language design, compiler design, and run-time organization. Topics covered
include syntactic and lexical analysis, handling of user-defined types and type-
checking, context analysis, code generation and optimization, and memory
management and run-time organization. Lexical analysis, Parsing, Syntax
directed translation, Runtime environments, Intermediate and target code
generation, Basics of code optimization.
(2 Units)

CS 431 Compiler construction II

Compiler structure: analysis-synthesis model of compilation, various phases of

a compiler, tool based approach to compiler construction. Lexical analysis:
interface with input, parser and symbol table, token, lexeme and patterns.
Difficulties in lexical analysis. Error reporting. Implementation. Regular
definition, Transition diagrams, LEX. Syntax analysis: CFGs, ambiguity,
associativity, precedence, top down parsing, recursive descent parsing,
transformation on the grammars, predictive parsing, bottom up parsing,
operator precedence grammars, LR parsers (SLR, LALR, LR), YACC. Syntax
directed definitions: inherited and synthesized attributes, dependency graph,
evaluation order, bottom up and top down evaluation of attributes, L- and S-
attributed definitions. Type checking: type system, type expressions, structural
and name equivalence of types, type conversion, overloaded functions and

operators, polymorphic functions. Run time system: storage organization,

activation tree, activation record, parameter passing, symbol table, dynamic
storage allocation. Intermediate code generation: intermediate representations,
translation of declarations, assignments, control flow, boolean expressions and
procedure calls. Implementation issues. Code generation and instruction
selection: issues, basic blocks and flow graphs, register allocation, code
generation, dag representation of programs, code generation from dags, peep
hole optimization, code generator generators, specifications of machine.

(2 Units)
CS 333 Operating System II
Process management: process synchronization and mutual exclusion, two
process solution and Dekker's algorithm, semaphores, examples (producer-
consumer, readers-writer, dining philosophers, etc.). CPU scheduling:
multiprogramming and time sharing, scheduling approaches (SJF, FIFO,
round robin, etc.). Input/Output: device controllers and device drivers, disks,
other devices. Memory management: with and without swapping, virtual
memory - paging and segmentation, page replacement algorithms,
implementation. File systems: FS services, disk space management, directory
and data structure. Deadlocks: modeling, detection and recovery, prevention
and avoidance. Example Systems: Unix, MSDOS.

(2 Units)
VTE 421 Data Based Management II
This course covers the fundamental topics for Database Management Systems:
Database System Architectural Principles (ACID properties; data abstraction;
external, conceptual, and internal schemata; data independence; data definition
and data manipulation languages), Data models (entity-relationship and
relational data models; data structures, integrity constraints, and operations for
each data model; relational query languages: SQL, algebra, calculus), Theory
of database design (functional dependencies; normal forms; dependency
preservation; information loss), Query Optimization (equivalence of
expressions, algebraic manipulation; optimization of selections and joins),
Storage Strategies (indices, B-trees, hashing), Query Processing (execution of
sort, join, and aggregation operators), and Transaction Processing (recovery
and concurrency control).
(2 Units)
CS 341 Computer Architecture I
The fundamental principles and engineering tradeoffs involved in designing
modern parallel computers, as well as the programming techniques to
effectively utilize these machines. Topics include naming shared data,
synchronizing threads, and the latency and bandwidth associated with
communication. Case studies on shared-memory, message-passing, data-
parallel and dataflow machines will be used to illustrate these techniques and
tradeoffs. Programming assignments will be performed on one or more
commercial multiprocessors, and there will be a significant course project.
(2 Units)
CS 342 Computer Architecture II
Introduction: Overview of Computer Architecture, Performance evaluation of
processors, pipelining, super-pipelines, Advanced pipelines, static and

dynamic scheduling, instruction-level parallelism, loop unrolling, VLIW and

Super scalar processors, Vector processing and array processing. Memory:
bandwith issues, memory organization, cache coherence, Symmetric
multiprocessors (SMP), NUMA-MPs, Massively parallel processors, Cache
coherence protocols, Interconnection networks, I/O processing,
multiprocessing, multiplexing, Examples of contemporary architectures, RAS
(Reliability, Availability, Scalability) features
(2 Units)
CS 451 Algorithms
This course is about the design and analysis of algorithms. We study specific
algorithms for a variety of problems, as well as general design and analysis
techniques. Specific topics include searching, sorting, algorithms for graph
problems, efficient data structures, lower bounds and NP-completeness. A
variety of other topics may be covered at the discretion of the instructor. These
include parallel algorithms, randomized algorithms, geometric algorithms, low
level techniques for efficient programming, cryptography, and cryptographic
protocols, Analysis, Asymptotic notation, Notions of space and time
complexity, Worst and average case analysis; Design: Greedy approach,
Dynamic programming, Divide-and-conquer; Tree and graph traversals,
Connected components, Spanning trees, Shortest paths; Hashing, Sorting,
Searching. Asymptotic analysis (best, worst, average cases) of time and space,
upper and lower bounds, Basic concepts of complexity classes P, NP, NP-
hard, NP-complete.
(2 Units)
CS 311 Numerical Methods I
In this course, topics covered here includes; LU decomposition for systems of
linear equations; numerical solutions of non-linear algebraic equations by
Secant, Bisection and Newton-Raphson Methods; Numerical integration by
trapezoidal and Simpson's rules.
(2 Units)
Mths 212 Linear Algebra
Algebra of matrices, determinants, systems of linear equations, Eigen values
and Eigen vectors etc.
(2 Units)

Stat 203 Stat for Physical Science & Engr. I

Probability: Conditional Probability; Mean, Median, Mode and Standard
Deviation; Random Variables; Distributions; uniform, normal, exponential,
Poisson, Binomial.
(2 Units)
Stat 206 Stat for Physical Science& Engr II
Set Theory & Algebra: Sets; Relations; Functions; Groups; Partial Orders;
Lattice; Boolean Algebra.
(2 Units)
Mths 214 Linear Algebra II
Combinatorics: Permutations; Combinations; Counting; Summation;
generating functions; recurrence relations; asymptotics.
Graph Theory: Connectivity; spanning trees; Cut vertices & edges; covering;
matching; independent sets; Colouring; Planarity; Isomorphism. Calculus:
Limit, Continuity & differentiability, Mean value Theorems, Theorems of

integral calculus, evaluation of definite & improper integrals, Partial

derivatives, Total derivatives, maxima & minima.
(2 Units)
CS 461 Organization of Programming languages
The basic thrust of this course will be on learning the distinctive techniques in
the different paradigms and what semantic and compiling issues come up in
the various languages considered. Imperative Languages: block structure,
scope rules, parameter passing, constructs like coroutines, tasks etc.
Functional programming: functions, recursion, macros, user-defined control
constructs, higher order constructs, types, data abstraction, polymorphism,
semantics, implementation issues. Declarative programming: declarative
programming, Horn clauses, procedural interprettation of Horn clauses, SLD-
resolution including unification, the logical variable, implementation issues:
abstract machines and compiling to abstract machines. Object-oriented
programming: objects and programming with objects, classes and instances,
hierarchies and inheritance, encapsulation, semantics of OO languages and
implementation issues

(2 Units)

CS 462 Data Structures

Overview of file organisation techniques: sequential, direct, indexed, hashed,

inverted, B-trees. Data models: relational, network, hierarchical. Relational
model: algebra, calculus, normal forms. Implementation of query languages,
security and protection of data recovery methods. Concurrent operations on
data bases, introduction to distributed data base systems, case studies.

(2 Units)