CS at the AUST


COMPUTER SCIENCE

Beginning with the Sophomore year, a student majoring in Computer Science must complete a minimum of 107 credits for
graduating with a B.S. degree. These credits are distributed as follows:
a. A total of 12 credits for general graduation requirements consisting of :
ENG 201, ENG 202, ENG 205, and HMS 220, plus 9 credits of liberal arts electives selected from the Department of
Social Sciences and Humanities and/or the Department Natural Sciences.
b. A total of 62 credits for departmental major requirements consisting of the following Computer Science (CSI) courses:
201, 205, 205L, 212, 225, 250, 250L, 301, 305, 311, 311L, 312, 316, 319, 345, 345L, 401, 402, 405, 411,
412, 416, 444, 446, 450, 497, and 499, plus 18 credits consisting of:
ACC 201, ACC 202 or MIS 305 or MKT 201, MAT 204, MAT 205, MAT 210 and MAT 315.
c. A total of 6 additional credits selected from the following courses:
CSI 395, CSI 410, CSI 436 and CSI 470.

Division of Computer Science and Computer & Communications Engineering
Computer Science
TOTAL REQUIRED CREDITS FOR GRADUATION WITH A BS DEGREE
(107 CREDITS STARTING SOPHOMORE YEAR)
GENERAL GRADUATION REQUIREMENTS (12 CREDITS)
Code Description Prerequisite Cr.
ENG 201 Composition and Rhetoric I ENG 200 3
ENG 202 Composition and Rhetoric II ENG 201 3
ENG 205 English Communication Skills ENG 202 3
HMS 220 Arabic Communication Skills NONE 3
FREE LIBERAL ARTS ELECTIVES (9 CREDITS)
TO BE SELECTED FROM THE DEPARTMENT OF SOCIAL SCIENCES AND HUMANITIES AND/OR THE
DEPARTMENT OF NATURAL SCIENCES
BUSINESS REQUIREMENTS (6 CREDITS)
ACC 201 Principles of Accounting I ENG 001 3
ACC 202/MIS 305/ Business Elective ENG 200 3
MKT 201
MATH REQUIREMENTS (12 CREDITS)
MAT 204 Discrete Math MAT 202 3
MAT 205 Linear Algebra MAT 202 3
MAT 210 Probability and Statistics for Science MAT 202 3
MAT 315 Numerical Methods MAT 205, CSI 250 3
COMPUTER SCIENCE MAJOR REQUIREMENTS (62 CREDITS)
CSI 201 Introduction to Computing ENG 200 3
CSI 205 Computer Programming I CSI 201, ENG 200, Co-CSI205L 3
CSI 205L Programming I Lab Co-CSI 205 1
CSI 212 Computer Organization & Assembly CSI 201 3
CSI 225 Systems Analysis & Design CSI 201 3
CSI 250 Computer Programming II Co-CSI250L, CSI 205 3
CSI 250L Programming II Lab Co-CSI 250 1
CSI 301 Theory of Computation CSI 205, MAT 204 3
CSI 305 Software Engineering CSI 225 3
CSI 311 Java Programming Co-CSI 311L, CSI 205 3
CSI 311L Java Programming Lab Co- CSI 311 1
CSI 312 Computer Architecture CSI 212 3
CSI 316 Database Systems CSI 305 3
CSI 319 Data Structures CSI 250 3
CSI 345 Computer Networks CSI 212, CSI 311, Co-CSI 345L 3
CSI 345L Computer Networks Lab Co-CSI 345 1
CSI 401 Algorithms CSI 319 3
CSI 402 Operating Systems CSI 312, CSI 345 3
CSI 411 Advanced Java Programming CSI 311, CSI 316, CSI 319 3
CSI 444 System Security CSI 345 3
CSI 450 Compiler Design CSI 301, CSI 319 3
CSI 497 Senior Project Proposal Senior Standing 1
CSI 499 Computer Science Senior Project CSI 497 3
AREA OF EMPHASIS
CSI 405 Advanced Software Engineering CSI 305 3
CSI 412 Advanced Computer Architecture CSI 312 3
CSI 416 Advanced Database Systems CSI 316 3
CSI 446 Advanced Networking CSI 345 3
TECHNICAL ELECTIVES (6 CREDITS)
CSI 395 Special Topics in Computer Science Senior Standing 1-3
CSI 410 Artificial Intelligence CSI 319 3
CSI 436 System Software Applications CSI 345 3
CSI 470 Computer Graphics CSI 319, MAT 205 3

COMPUTER SCIENCE
Course Descriptions

CSI 200 Computer Literacy (3 credits)
This course is an introductory non-technical survey of computer systems and a study of the social impact of computers.
Topics include introduction to the hardware components of a computer system, input and output devices, storage devices,
communications and connectivity, internet, security, information systems and deep exposition to software applications such
as text editors, spreadsheet and presentation software.
Prerequisite: ENG 200
CSI 201 Introduction to Computing (3 credits)
This course is designed to provide the student with basic and essential techniques of computing. Topics include: introduc-
tion to the field of Computer Science, hardware components of a computer, investigation of operating systems, focus on
network protocols and connectivity and internet technology; study the flavour of the development of web pages using HTML,
XHTML, CSS and JavaScript; Introduction of structured and object-oriented language, overview of flowcharting and basic
constructs, such as control structures, functions and arrays.
Prerequisite: ENG 200
CSI 205 Computer Programming I (3 credits)
Introduction to the software development process: design, implementation, testing and documentation; basic principles of
algorithmic problem solving; a thorough investigation into the C++ programming language. Topics include: control struc-
tures, functions, overloading functions, functions templates, one dimensional/multi-dimensional arrays, pointers, strings and
introduction to the object orientation. This course includes weekly laboratory exercises that allow the student to investigate
the lecture material by writing non – trivial C++ applications.
Prerequisite: CSI 201, ENG 200, Co-CSI 205L,
CSI 205L Programming I Laboratory (1 credit)
This one credit course is taken in conjunction with CSI 205. The purpose of this course is to give students extra hands-on
programming practice with guided supervision. Students will work as individuals or in pairs each week to develop working
programs, with marks for each development phase.
Co-requisite: CSI 205
CSI 212 Computer Organization & Assembly (3 credits)
This course introduces the concepts of assembly language programming. Topics covered are Number systems, Boolean
algebra, Karnaugh maps, digital logic design (combination and sequential), assembly language, registers, arithmetic oper-
ations, addressing, compare and branch instructions, arrays and looping, character and string manipulation, subprogram,
bit and byte manipulation and floating point operations.
Prerequisite: CSI 201
CSI 225 Systems Analysis & Design (3 credits)
This course introduces concepts and methodologies in the analysis, specification, design and management of information
systems. Covered topics include: feasibility study, requirements analysis and specifications, user-interface design, software
design and implementation, project estimation and planning, object-oriented analysis and design, formal methods and
CASE tools. A team-based term project is required to reinforce the taught concepts and methodologies.
Prerequisite: CSI 201
CSI 250 Computer Programming II (3 credits)
This course is a continuation of CSI 205. It introduces the fundamentals of Object Oriented Programming. Topics include:
in-depth coverage of classes, overloading operators, single/multiple inheritance, polymorphism, virtual functions, thorough
investigation of the Standard Template Library (STL), sequential/random access files, and GUI libraries may also be includ-
ed. This course includes weekly laboratory exercises that allow the student to investigate the lecture material by writing com-
plex C++ applications.
Prerequisite: Co-CSI 250L, CSI 205
CSI 250L Programming II Laboratory (1 credit)
This one credit course is taken in conjunction with CSI 250. The purpose of this course is to give students advanced
hands-on programming with guided supervision. Students will work as individuals or in pairs each week to develop work-

ing programs and applications, with marks for each development phase.
Co-requisite: CSI 250

CSI 301 Theory of Computation (3 credits)
This course explores the mathematical foundations of computer science. It investigates the interaction of various models of
computation. Topics include: sets, finite state machines, regular languages and grammars, push down machines, context
free languages and grammars, Turing machines and context sensitive languages and grammars.
Prerequisite: CSI 205, MAT 204
CSI 305 Software Engineering (3 credits)
This course presents a broad perspectives on software systems engineering, it concentrates on widely-used techniques for
developing large scale software systems and covers the following topics: software processes, project management, require-
ments engineering, system models, UML Design, software prototyping, software cost estimation, distributed system architec-
ture, design with reuse and quality management.
Prerequisite : CSI 225
CSI 311 Java Programming (3 credits)
This course studies the aspects and types of the Java programming language. It explores the differences among Java Scripts,
Java Applets, and Java stand alone Applications. Topics include: detailed discussion of JavaScript – The de facto client side
scripting language for web-based applications, the programming foundation for client side scripting and Java Applets to
create programs that can be executed simply by loading the appropriate web page in a web browser; The basic constructs
of the Java language which include access controls, flow control, assertions, object orientation, exception handling,
garbage collection, overriding and threads, to create stand alone applications that can be executed using the Java Interpreter.
Prerequisite: Co-CSI 311L, CSI 205
CSI 311L Java Programming Lab (1 credit)
This one credit course is taken in conjunction with CSI 310. The purpose of this course is to give students hands-on pro-
gramming in Java applets and applications with guided supervision. In this Lab, the object oriented concept is implement-
ed. The examples cover all materials given in class.
Students will work as individuals or in groups each week to develop working programs and applications, with marks for
each development phase.
Co-requisite: CSI 311
CSI 312 Computer Architecture (3 credits)
This course studies the fundamentals of the design and analysis of the hardware of a computer system. Topics include design
methodology of a basic microprocessor, instruction set design, addressing, microprogramming, memory management,
caches, memory hierarchy, pipelining, interrupts and I/O structures. Vector and Parallel processing, are also introduced.
Prerequisite: CSI 212
CSI 316 Database Systems (3 credits)
This course studies the fundamental concepts for designing and implementing a database. Covered topics include: ER/EER
model, rational model, data definition and data manipulation languages, design theory for relational databases, normal-
ization, relational algebra, graphically oriented query languages, SQL, client/server databases, multi-tier architecture, secu-
rity and integrity, concurrency control and object-relational databases.
Prerequisite: CSI 305
CSI 319 Data Structures (3 credits)
This course emphasizes the study of the basic data structures of computer science. It covers methods for defining and
manipulating static and dynamic Abstract Data Types (ADTs)(arrays, stacks, queues, lists, trees and graphs) using the C++
or Java language. Algorithms for searching and sorting, hash tables and binary heaps are also covered.
Prerequisite: CSI 250
CSI 345 Computer Networks (3 credits)
This course introduces the infrastructures of computer networks form the simplest peer-to-peer local area networks to the
vastly complex metropolitan and wide area networks. Topics include: ISO sever-layer model, physical aspect of data trans-
mission, bandwidth, connection oriented (TCP/IP), and connectionless services (UDP), internetworking using bridges, routers
and programming multithread client-server applications through interfaces, sockets and Remote Procedure Calls (RPC).
Prerequisite: CSI 212, CSI 311, Co-CSI 345L
CSI 345L Computer Networks Laboratory (1 credit)
The laboratory projects will complement and extend the lecture material. They are design-oriented and experimental in

nature. Sample projects include: (1) implementation of a network protocol, (2) deign of an elementary file transfer proto-
col, (3) design and analysis of a reliable transport protocol over UDP, (4) design and analysis of a distributed database over
TCP/IP network, (5) design of a simulation model to study the characteristics of various error control strategies.
Co-requisite: CSI 345
CSI 395 Special Topics in Computer Science (1-3 credits)
The course presents new and emerging topics in the field of computer science.
Prerequisite: Senior Standing
CSI 401 Algorithms (3 credits)
The course shows how to design and analyze an efficient algorithm. Covered topics include: time and space complexity,
efficiency classifications and mathematical analysis of recursive and nonrecursive algorithms, optimization techniques, lin-
ear programming, divide and conquer techniques, graphs and networks problems, string matching and greedy algorithms.
Prerequisite: CSI 319
CSI 402 Operating Systems (3 credits)
This course presents the concepts of operating systems and their implementation. Covered topics include: process manage-
ment and synchronization, interprocess communication, resource management, mutual exclusion, deadlock prevention,
memory management, virtual memory, disk management, security and protection, monoprogramming and multiprogram-
ming and I/O control system.
Prerequisite: CSI 312, CSI 345
CSI 405 Advanced Software Engineering (3 credits)
This course discusses the design and construction of sizeable software products. Covered topics include: software require-
ments elicitation, team process infrastructure, technical management of software development teams, software development
process models, software design, documentation, quality assurance during development, software unit and integration test-
ing, work bench, development environments, test tools, configuration management and resource estimation to support
appropriate levels of quality.
Prerequisite: CSI 305
CSI 410 Artificial Intelligence (3 credits)
This course introduces artificial intelligence concepts and languages using Clips, Lisp and Prolog. Covered topics include:
intelligent agents, problem solving and search, game playing, theorem proving, machine learning, genetic algorithms,
knowledge representation techniques, knowledge-based systems, designing and implementing a knowledge-based system,
expert systems, neural networks and Natural Language Processing (NLP).
Prerequisite: CSI 319
CSI 411 Advanced Java Programming (3 credits)
This course incorporates the advanced programming concepts with the three major java platforms – Java 2 Enterprise
Edition (J2EE), Java 2 Standard Edition (J2SE), and Java 2 Micro Edition (J2ME). Topics include: Server Side Scripting (JSP),
Files and Streams, Collections, Java Database Connectivity (JDBC), Model-View-Controller (MVC), Java Beans, Serverlets,
Remote Method Invocation (RMI), Common Object Request Broker Architecture (CORBA) and Java Based Wireless
Applications Development. By the completion of this course, the student will be able to design, model and write complex
distributed applications.
Prerequisite: CSI 311, CSI 316, CSI 319
CSI 412 Advanced Computer Architecture (3 credits)
This course is intended to provide students with a solid understanding of advanced architectural techniques used in today’s
high-performance processors. Topics include computer models, superscalar microprocessors, Very Long Instruction Word
(VLIW) microprocessors, Multimedia instruction set extensions, Vector processors, multiprocessors and multi-computers,
cache/shared memory organization, linear and nonlinear pipeline processors, parallel program development, optimization and envi-
ronments.
Prerequisite: CSI 312
CSI 416 Advanced Database Systems (3 credits)
This course applies the theoretical concepts of database design with an emphasis on database administration and connec-
tivity. Topics include: database administration, interactive websites, internet and database connection, web-to-database
tools (coldfusion, ASP, and PHP), connectivity between the interfaces and different commercial DBMSs, JDBC and ODBC
use on a database server.
Prerequisite: CSI 316

CSI 436 System Software Application (3 credits)
This course discusses the steps needed for configuring a network. Topics include : directory services infrastructure, enter-
prise network modeling, DHCP, DNS, WINS, connectivity, managing trees and forests, requirements for a TCP/IP solution,
management strategy for networking services, effective web infrastructure design and managing secure network.
Prerequisite: CSI 345
CSI 444 System Security (3 credits)
This course focuses on the underlying concepts of computer systems security and information protection. It enables the stu-
dent to discover the nature of computer security, threats, and vulnerabilities, assessing the risks, developing computer secu-
rity policy, communications and network security, disaster recovery, computer viruses. Topics include Block Ciphers, Data
Encryption Standard (DES algorithm), Public-Key Cryptography, RSA algorithm, Authentication Protocols(SSL, KERBEROS),
Message Authentication, Authentication Application, hash functions, Digital Signatures, Pretty Good Privacy(PGP) service,
Electronic Mail Security, IP Security, Web Security, Malicious Software and Firewalls.
Prerequisite: CSI 345
CSI 446 Advanced Networking (3 credits)
This course is a follow-up to CSI 345. The course provides the required basics that are needed to develop networking soft-
ware, along with case studies of several networking applications. The focus is on protocols, algorithms and tools needed
to support the development and delivery of advanced services over networks. At the end of this course, students will be
able to design and implement network architectures with reasonable effort, be prepared to undertake an in-depth study of
LANs and WANs with their access mechanisms, routing algorithms, performance evaluation methodologies, and determine
where improvements can be made by critically examining some existing applications.
Prerequisite: CSI 345
CSI 450 Compiler Design (3 credits)
This course introduces the major aspects and interfaces used to modularize a modern compiler, with an emphasis on imple-
mentation techniques. Topics include: Lexical Analyzer (Scanner) LEX; Top down parsing; LL(1) parsers; Bottom up parsing;
YACC, LR parsers; Syntax directed translation; Types and type checking; Run-Time storage; Symbol table management;
Intermediate code generation; and Code optimizations. Advanced material will also be included where time allows, such
as garbage collection, compilation of object-oriented and functional languages.
Prerequisite: CSI 301, CSI 319
CSI 470 Computer Graphics (3 credits)
This course introduces the fundamentals of computer graphics Hardware and Software. It presents a detailed description of
the basic algorithms for 2-dimensional and 3-dimensional graphics. Algorithms for shading, hidden line removal, comput-
er manipulation and perspective transformations of figures. Curved line and surface calculations: Spline, Bezier, and B-
Spline. In addition, students learn about the utilization of graphics libraries, such as OpenGL.
Prerequisite: CSI 319, MAT 205
CSI 497 Senior Project Proposal (1 credit)
This course concentrates on the planning and design of pilot projects. It investigates the different aspects of material
acquired during the previous years of study. Emphasis is placed on functional specification, design specification, user inter-
face design, implementations plans, and team work assignment.
Prerequisite: Senior Standing
CSI 499 Computer Science Senior Project (3 credits)
In this course the student undertakes a significant self-directed project under the guidance of a faculty advisor. This proj-
ect reflects the material pertaining to the senior project proposal. It consists of implementing, testing, verifying and docu-
menting the results and findings of the project.
Prerequisite: CSI 497

Leave a Reply