28.12.2014 Views

academic-catalog2011.. - LAU Publications - Lebanese American ...

academic-catalog2011.. - LAU Publications - Lebanese American ...

academic-catalog2011.. - LAU Publications - Lebanese American ...

SHOW MORE
SHOW LESS

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 />

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<br />

and debugging, 1-D and 2-D arrays, basic<br />

searching, and sorting algorithms.<br />

CSC245 Objects and Data Abstraction<br />

[3-0, 3 cr.]<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 />

[3-0, 3 cr.]<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<br />

Abstraction and MTH207: Discrete Structures I.<br />

CSC320 Computer Organization [3-0, 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. Processor<br />

and system performance, Amdahl’s law.<br />

Introduction to reconfigurable logic and specialpurpose<br />

processors. Introduction to instruction<br />

set architecture, and microarchitecture. Processor<br />

structures, instruction sequencing, flow-of<br />

control, subroutine call and return mechanism,<br />

structure of machine-level programs, low level<br />

architectural support for high-level languages.<br />

Memory 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 />

CSC322 Computer Organization Lab<br />

[3-0, 1 cr.]<br />

Students gain experience with computer<br />

organization techniques by designing and<br />

implementing actual circuits using a highlevel<br />

language, Verilog HDL and FPGAs.<br />

Course culminates in the design and<br />

simulation of a complete pipelined CPU.<br />

Co-requisite: CSC 320: Computer Organization.<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<br />

of product forms), register transfer notation,<br />

finite state machines, physical considerations,<br />

data 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 />

CSC326 Operating Systems [3-0, 3 cr.]<br />

Introduces the fundamentals of operating<br />

systems design and implementation. Topics<br />

ACADEMIC CATALOG [ 2011-2012 ] SCHOOL OF ARTS AND SCIENCES<br />

113

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!