academic-catalog2010.. - LAU Publications - Lebanese American ...
academic-catalog2010.. - LAU Publications - Lebanese American ...
academic-catalog2010.. - LAU Publications - Lebanese American ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Department of Computer Science and Mathematics<br />
algorithm stepwise refinement, pseudo-code,<br />
introduction to the object-oriented paradigm<br />
(abstraction, objects, classes, entity and<br />
application classes, class libraries, methods,<br />
encapsulation, class interaction, aggregation),<br />
inheritance, error types, simple testing and<br />
debugging, 1-D and 2-D arrays, basic searching,<br />
and sorting algorithms.<br />
CSC245 Objects and Data Abstraction:<br />
This course presents further techniques of<br />
object oriented programming and problem<br />
solving, with emphasis on abstraction and<br />
data structures. Topics include: object<br />
oriented concepts, such as, composition,<br />
inheritance, polymorphism, information<br />
hiding, and interfaces; basic program design<br />
and correctness, such as, abstract data<br />
types, preconditions and post conditions,<br />
assertions and loop invariants, testing, basic<br />
exception handling, and the application of<br />
algorithm design techniques. The course<br />
also covers: basic algorithmic analysis, time<br />
and space tradeoffs in algorithms, big-O<br />
notation; fundamental data structures and<br />
applications, such as, collections, single- and<br />
double-linked structures, stacks, queues, and<br />
trees; performance issues for data structures;<br />
recursion, more sorting algorithms.<br />
Prerequisite: CSC 243: Introduction to Object<br />
Oriented Programming.<br />
CSC310 Algorithms and Data Structures:<br />
This course presents the fundamental<br />
computing algorithms and data structures,<br />
with emphasis on design and analysis. Topics<br />
include the asymptotic analysis of upper<br />
and average complexity bounds, the best,<br />
the average, and the worst, case behaviors.<br />
Recurrence relations, sets, hashing and hash<br />
tables, trees and binary trees (properties,<br />
tree traversal algorithms), heaps, priority<br />
queues, and graphs (representation, depthand<br />
breadth-first traversals and applications,<br />
shortest-path algorithms, transitive closure,<br />
network flows, topological sort). The course also<br />
covers the sorting algorithms and performance<br />
analysis which include mergesort, quicksort<br />
and heapsort. As well, the course details the<br />
fundamental algorithmic strategies (divideand-conquer<br />
approach, greedy, dynamic<br />
programming, and backtracking). Introduction<br />
to NP-completeness theory.<br />
Prerequisites: CSC 245: Objects and Data Abstraction<br />
and MTH207: Discrete Structures I.<br />
CSC320 Computer Organization [3 cr.]<br />
Overview of the history of the digital computer,<br />
representation of numeric data, introduction<br />
to digital logic, logic expressions and Boolean<br />
functions, logic functions minimization.<br />
Processor and system performance,<br />
Amdahl’s law. Introduction to reconfigurable<br />
logic and special-purpose processors.<br />
Introduction to instruction set architecture,<br />
and microarchitecture. Processor structures,<br />
instruction sequencing, control flow, subroutine<br />
call and return mechanism, structure of<br />
machine-level programs, low level architectural<br />
support for high-level languages. Memory<br />
hierarchy, latency and throughput, cache<br />
memories: operating principles, replacement<br />
policies, multilevel cache, and cache coherency.<br />
Register-transfer language to describe internal<br />
operations in a computer, instruction pipelining<br />
and instruction-level parallelism (ILP), overview<br />
of superscalar architectures. Multicore and<br />
multithreaded processors.<br />
Co-requisite: CSC 245: Objects and Data<br />
Abstraction, MTH 207: Discrete Structures I.<br />
CSC323 Digital Systems Design [3-0, 3 cr.]<br />
The course introduces students to the<br />
organization, and architecture, of computer<br />
systems. Topics include the fundamental<br />
building blocks of digital logic (logic gates, flipflops,<br />
counters, registers), programmable logic<br />
devices, (logic expressions, minimization, sum of<br />
product forms), register transfer notation, finite<br />
state machines, physical considerations, data<br />
representation, numeric data representation<br />
and number bases, representation of<br />
nonnumeric data, digital circuit modeling, HDL<br />
(VHDL, Verilog), simulation of digital circuit<br />
models, synthesis of digital circuits from HDL<br />
models, and the hierarchical and modular<br />
design of digital systems (simple data paths<br />
and hardwired control unit realization) as well<br />
as the introduction to embedded systems.<br />
Prerequisite: CSC243 Introduction to Object<br />
Oriented Programming.<br />
CSC 326 Operating Systems:<br />
Introduces the fundamentals of operating<br />
systems design and implementation. Topics<br />
include operating system components; process<br />
scheduling; interprocess communication;<br />
process synchronization (semaphores and<br />
monitors); mutual exclusion problem; deadlock<br />
handling mechanisms; concurrent execution;<br />
multithreading; interrupt handling in a concurrent<br />
environment; mutual exclusion; virtual memory;<br />
page placement and replacement policies;<br />
caching; fundamental concepts of file systems.<br />
<strong>Lebanese</strong> <strong>American</strong> University | page 120