0% found this document useful (0 votes)
87 views34 pages

Course Outline For Core Competency Courses

Uploaded by

Lemi Turo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
87 views34 pages

Course Outline For Core Competency Courses

Uploaded by

Lemi Turo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

1) Course Title: Computer Programming

Course Description
This course teaches problem solving using computers, algorithms, program structure, constants, types,
variables, reserved words, syntax diagram, identifiers, numbers, character strings and constant declarations;
basic data types, statements (assignment, I/O, control), structured data types, subprograms, file
management; recursive functions; overloaded functions; linking multiple source files; and data structures.
Concrete examples enable the students to write programs and use data structure elements in the programs.

Course objectives
On completion of the course successfully, students will be able to:
 Apply programming skills to solve problems
 Understand basic concepts in computer science such as Boolean logic and problem decomposition
 Learn data structures (such as strings, matrices and arrays), logic and control structures (such as ‘if’
and ‘for’ statements), data manipulation and presentation (loading data files, computing simple
statistics and graphing data), and proper programming techniques (writing modular, well-
commented code)
 Understand programming concepts that will assist in learning other languages (like Java, Perl, or
C#)
 Learn about computing resources on campus and online
 Analyze simple problems and formulate solutions
 Develop computer programs for quality program solving
 Practice good programming disciplines and styles

Course outline
Chapter 1: Introduction
1.1. Introduction to programming
1.2. Problem solving techniques
1.2.1.Flowchart
1.2.2.Pseudo code
1.2.3. Algorithms

Chapter 2: Basics of programming


2.1. Structure of a Program
2.2. C++ IDE
2.3. Showing Sample program
2.4. Keywords, Identifiers, Inputs, Outputs, Comments, Parts of a program
2.5. Data Types
2.6. Variables
2.7. Constants
2.8. Operators
2.8.1 Assignment Operators
2.8.2 Compound Assignment Operators
2.8.3 Arithmetic Operators
2.8.4 Relational Operators
2.8.5 Increment and Decrement Operators
2.8.6 Infix and postfix types
2.8.7 Precedence of Operators

Chapter 3: Control Statements


3.1. If…. else statement
3.2. If… elseif… else statement
3.3. Switch statement
3.4. For loop statement
3.5. While loop statement
3.6. Do…while statement

Chapter 4: Function and Passing argument to function


4.1 Definition of function
4.2 Declaration of function
4.3 Passing value of a function by Value
4.4 Passing value of a function by reference

Chapter 5: Arrays, Pointers & Strings


5.1. One-dimensional array
5.2. Multi-dimensional array
5.3. Address and pointer
5.4. Pointer and array
5.5. Pointer and function
5.6. Pointer and string

Chapter 6: Structure
6.1. Specifying simple structure
6.2. Defining a structure variable
6.3. Accessing structure variable

Chapter 7: File (4 hrs)


7.1. File and file management
2) Course Title: Fundamentals of Database Systems
Course description
This course is assumed to be the first course in database management systems. It starts by introducing
what database is and database systems, and how it differs with the traditional file processing system. It
then deals with data models, ER diagrams, database design methods, normalization, relational algebra
and calculus, file organizations and storage management, index structure for files, and SQL statements.
The course mainly emphasizes on basics of database systems how to retrieve and modify data. It also
deals with different database environments.

Course objectives
This course introduces the students to the overview, design and implementation of database systems.
At the end of this course, students will be able to:
 Understand what database is, database system and DBMS
 Differentiate database system from file system
 Identify the pros and cons of manual approach, file based approach and database approach
 Understand the basic principles of database design systems using different database models
 Appreciate the use of database system in the real world.
 Design different types of databases
 Understand database normalization & functional dependency
 Understand the principles of relational database management systems and their languages
 Understand file organizations and storage management, and index structure for files
 Demonstrate queries in the relational algebra.
 Demonstrate queries in the tuple relational calculus.
 Create a relational database schema in SQL that incorporates key, entity integrity, and referential
integrity constraints.

Course outline
Chapter 1: Introduction to Database Systems
1.1. Overview
1.2. Basics of Database
1.3. File organization verses Database approach
1.4. Users and actors of Database system
1.5. Characteristics of the Database Approach
1.6. Actors on the Scene

Chapter 2: Database System Architecture


2.1. Data models, Schemas, and Instances
2.2. Over view of data models
2.3. Architecture and Data Independence
2.4. Database Language and Interface
2.5. The Database System Environment
2.6. Classification of DBMS

Chapter 3: Database Modeling


3.1. The Entity Relationship (ER) Model
3.1.1.The high-level conceptual model
3.1.2.Entities, Attributes, and Keys
3.1.3.Relationships, Associations, and Constraints
3.1.4.The ER Diagrams
3.1.5.Mapping ER-models to relational tables
3.2. Enhanced Entity Relationship (EER) Model
3.2.1.Inheritance
3.2.2.Union
3.2.3.Aggregation and Association
3.2.4.Mapping EER model to relational model
3.3. The Relational Database Model
3.3.1.The Relational Model Concepts
3.3.2.The Relational Constraints and Relational Database Schemas
3.3.3.The Relational Operations

Chapter 4: Functional Dependency and Normalization


4.1. Functional Dependency
4.2. Normal Forms
4.2.1.First Normal Form
4.2.2.Second Normal Form
4.2.3.Third Normal Form
4.2.4.Boyce Codd Normal Form

Chapter 5: Record Storage and Primary File Organization


5.1. Introduction
5.2. Operations on Files
5.3. Files of Unordered Records (Heap Files)
5.4. Files of Ordered Records (Sorted Files)
5.5. Hashing Techniques
5.6. Index Structure for Files
5.7. Types of Single Level Ordered Index
5.8. Dynamic Multilevel indexes using B-Trees and B+ Trees
5.9. Indexes on Multiple Indexes

Chapter 6: The Relational Algebra and Relational Calculus


6.1. Introduction
6.2. Relational Algebra
6.3. The Relational Calculus

Chapter 7: The SQL Language


7.1. Structured Query Language
7.2. Datatypes
7.3. DDL, DML, TCL and DCL
7.4. Basic Queries in SQL
7.5. Nested Queries in SQL
7.6. Views
7.7. Comments
7.8. Constraints
3) Course Title: Advanced Database Systems
Course description
This course deals with query optimization, transaction management, recovery and concurrency
control,
database authorization and security. Additional topics including object oriented and object
relational
database systems, distributed databases, and integration may also be covered. A major component
of the
course is a database implementation project using current database languages and systems.

Course objectives
At the end of this course, students will be able to:
 Describe the main concepts of the OO model such as object identity, type constructors,
encapsulation inheritance, polymorphism, and versioning
 Evaluate a set of query processing strategies and select the optimal strategy. Know the
basics of
transaction management and concurrency control
 Understand database security
 Use different recovery methods when there is a database failure
 Design a distributed database system in homogenous and heterogeneous environments

Course outline
Chapter 1: Concepts for Object-Oriented Databases
1.1. Overview of Object-Oriented Concepts
1.2. Object Identity, Object Structure, and Type Constructors
1.3. Encapsulation of Operations, Methods, and Persistence
1.4. Type Hierarchies and Inheritance

Chapter 2: Query processing and Optimization


2.1. Translating SQL Queries into Relational Algebra
2.2. Basic Algorithms for Executing Query Operations
2.3. Using Heuristic in Query Optimization
2.4. Using Selectivity and Cost Estimates in Query Optimization
2.5. Semantic Query Optimization

Chapter 3: Transaction Processing Concepts


3.1. Introduction
3.2. Transaction and System Concepts
3.3. Properties of Transaction
3.4. Schedules and Recoverability
3.5. Serializability of Schedules
3.6. Transaction Support in SQL

Chapter 4: Concurrency Control Techniques


4.1. Locking Techniques for Concurrency Control
4.2. Concurrency Control Based ON Timestamp Ordering
4.3. Multi-version Concurrency Control Techniques
4.4. Validation (Optimistic) Concurrency Control Techniques
4.5. Granularity of Data Items and Multiple Granularity Locking
4.6. Using Locks for Concurrency Control in Indexes
Chapter 5: Database Recovery Techniques
5.1. Backup and Recovery Concepts
5.2. Recovery Concepts Based on Deferred Update
5.3. Recovery Concepts Based on Immediate Update
5.4. Shadow Paging
5.5. The ARIES Recovery Algorithm
5.6. Recovery in Multi database Systems

Chapter 6: Database Security and Authorization


6.1. Introduction to DB Security Issues
6.2. Discretionary Access Control Based on Granting /Revoking of Privileges
6.3. Mandatory Access Control for Multilevel Security
6.4. Statistical DB Security

Chapter 7: Distributed Database System


7.1. Distributed Database Concepts
7.2. Data Fragmentation, Replication, and Allocation Techniques for Distributed Database
Design
7.3. Types of Distributed Database Systems
7.4. Query Processing in Distributed Databases

4) Course title: Object Oriented Programming


Course description
This programming course emphasizes the methodology of programming from an object-oriented
perspective and software engineering principles. It allows students to develop the ability to analyze
programming problems and design and document suitable solutions and to implement reliable and robust
software using contemporary program design methods. Topics to be dealt with are: classes: data
abstraction, information hiding, overloading; inheritance; polymorphism; exceptions handling.

Course objectives
Upon successful completion of the course, students will be able to:
 Explain the basic object oriented concepts
 Successfully code, debug and run programs with appropriate development environment
 Work on more advanced programs
 Have clear differentiation between structural and object oriented programming paradigms

Course outline
Chapter 1: Introduction to Object-Oriented Programming (4 hrs)
1.1. Types of programming paradigms
1.2. Overview of OO principles
1.3. Editing, Compiling and Interpreting
Chapter 2: Objects and Classes
2.1. Defining a class
2.2. Creating an Object
2.3. Instantiating and using objects
2.3.1 Printing to the Console
2.3.2 Methods and Messages
2.3.3 Parameter Passing
2.3.4 Comparing and Identifying Objects
2.3.5 Destroying Objects
2.3.6 Enumerated Types
2.4. Instance fields
2.5. Constructors and Methods
2.6. Access Modifiers
2.7. Encapsulation

Chapter 3: Inheritance and Polymorphism


3.1.Inheritance
3.2.Casting
3.3.Method Overriding and Overloading
3.4.Polymorphism
3.5.Super
3.6.The Object Class
3.7.Abstract Classes
3.8.Interfaces
3.9.Using Interfaces

Chapter 4: Exception Handling


4.1. Exceptions Overview
4.2. Catching Exceptions
4.3. The finally Block
4.4. Exception Methods
4.5. Declaring Exceptions
4.6. Defining and Throwing Exceptions
4.7. Errors and Runtime Exceptions

Chapter 5: Packages
5.1. Packages
5.2. The import Statement
5.3. Static Imports
5.4. CLASSPATH and Import
5.5. Defining Packages
5.6. Package Scope
Chapter 6: Data structures
6.1. The Set
6.2. Set Implementation Classes
6.3. The List
6.4. List Implementation Classes
6.5. The Queue
6.6. Queue Implementation Classes
6.7. Map/ dictionary

5) Course Title: Operating System


Course Description
What is an Operating System, history of operating system, operating system zoo; process concept, process
scheduling, inter-process communication; threads; CPU scheduling, basic concepts, scheduling criteria,
scheduling algorithms; process synchronization, the critical section problem, semaphores, monitors,
classical synchronization problems; deadlocks, avoidance, prevention, detection; memory management,
physical and virtual memory, swapping, allocation, paging, segmentation; file systems, access methods,
directory structure, file sharing and protection; security, authentication, intrusion detection, encryption.

Course Objectives
By the end of this course, students will be able to:
 Explain the objectives and functions of modern operating systems
 Describe the functions of a contemporary operating system with respect to convenience, efficiency,
and the ability to evolve.
 Explain the different states that a task may pass through and the data structures needed to support the
management of many tasks.
 Explain conditions that lead to deadlock.
 Compare and contrast the common algorithms used for both preemptive and non-preemptive
scheduling of tasks in operating systems, such as priority, performance comparison, and fair-share
schemes.
 Explain the concept of virtual memory and how it is realized in hardware and software

Course outline
Chapter 1: Introduction
1.1. Role and purpose of operating systems
1.2. History of operating system development
1.3. Types of operating systems

Chapter 2: Processes and process management


2.1. Process and Thread
2.2. The concept of multi-threading
2.3. Inter process communication
2.3.1. Race conditioning
2.3.2. Critical Sections and mutual exclusion
2.4. Process Scheduling
2.4.1. Preemptive and Computer organization and Architecture non-preemptive scheduling
2.4.2. Scheduling policies
2.5. Dead lock
2.5.1. Deadlock prevention
2.5.2. Deadlock detection
2.5.3. Deadlock avoidance
Chapter 3: Memory Management
3.1. Over view of physical memory and memory management
3.1.1. Hardware overlays
3.1.2. Swapping
3.1.3. Partitioning
3.2. Paging and Segmentation
3.2.1. Page replacement and replacement policies
3.3. Working sets and thrashing
3.4. Caching

Chapter 4: Device Management


4.1. Characteristics of parallel and serial devices
4.2. Buffering strategies
4.3. Direct memory access
4.4. Recovery from failure

Chapter 5: File Systems


5.1. Fundamental concepts on file
5.1.1. Data and meta data
5.1.2. Operations, organization and buffering in file
5.1.3. Sequential Vs Consequential data
5.1.4. Content and structure of directories
5.2. File system techniques
5.2.1. Partitioning
5.2.2. Mounting and unmounting
5.2.3. Virtual file system
5.2.4. Memory-mapped files
5.3. Special purpose file systems
5.3.1. Naming, searching and backup strategies

Chapter 6: Security and protection


6.1. Overview of system security
6.1.1. Policies and mechanism of system security
6.2. System protection, authentication
6.2.1. Models of protection
6.2.2. Memory protection
6.2.3. Encryption
6.2.3. Recovery management
6) Course Title: Computer Organization and Architecture
Course Description
This course introduces students to basic computer organization and architecture concepts. It covers:
number systems, Boolean algebra, digital logic circuits and their design, simple machine architecture,
genealogy of microprocessors, von Neumann architecture, the system bus model, data representation
and manipulation, organization of instruction sets and program execution, microprocessor
organization, memory organization, organization of input and output subsystem, I/O interface;
instruction set design philosophies, parallel processing, symmetric multiprocessing and clustering;
case study of at least two microprocessor families and other components of computing system.

Course Objectives
By the end of this course, students will be able to:
 Describe the basic structure and operation of a digital computer
 Explain in detail the operation of the arithmetic unit including the algorithms &
implementation of fixed-point and floating-point addition, subtraction, multiplication &
division.
 Identify different ways of communicating with I/O devices and standard I/O interfaces.
 Describe different performance enhancement of computer architecture
 Explain the basic structure of computer hardware & software
 Identify the processes involved in the basic operations of CPU
 Understand basic concepts of circuits and their design

Course Outline
Chapter 1: Introduction
1.1. Logic gates and Boolean algebra
1.2. Combinational circuit
1.2. 1.3. Flip flops
1.4. Sequential circuit

Chapter 2: Number system and codes


2.1. Data types
2.2. Complements
2.3. Fixed and floating-point representation
2.4. Codes

Chapter 3: Common digital components


3.1. Integrated circuit
3.2. Decoder, multiplexer and registers
3.3. Binary counter
3.4. Memory units

Chapter 4: Register Transfer Language and Micro Operations


4.1. Register transfer languages
4.2. Bus and memory transfer
4.3. Arithmetic and logic operations
4.4. Shift micro operations

Chapter 5: Basic Computer Organization and Design


5.1. Instructional code
5.2. Computer Register
5.3. Computer Instructions
5.4. Timing and control
5.5. Memory reference instructions
5.6. Design of Basic computers
5.7. Design of accumulator logic

Chapter 6: Central processing unit


6.1. General register organization
6.2. Stack organization
6.3. Instruction formats
6.4. Addressing modes
6.5. Data transfer and manipulation
6.6. Program control
6.7. Characteristics of RISC and CISC

Chapter 7: Memory Organization


7.1. Memory Hierarchy
7.2. Main memory
7.3. Cache memory
7.4. Mapping functions
7.4.1. Direct mapping
7.4.2. Associative mapping
7.4.3. Set associative mapping
7.5. External memory
7.5.1. Magnetic disks
7.5.2. RAID technology
7.5.3. Optical disks
7.5.4. Magnetic tapes

Chapter 8: Input-Output Organization


8.1. Peripheral devices
8.2. Input-output interface
8.3. Asynchronous data transfer
8.4. Mode of transfer
8.5. Priority interrupts
8.5. Direct memory access (DMA)
8.6. Input-Output Controller (IOC)
8.6. Serial communication

Chapter 9: Pipeline and Vector Processing


9.1. Pipeline
9.2. Parallel Processing
9.3. Arithmetic Pipeline
9.4. Instruction Pipeline
9.5. Vector Processing
9.6. Array Processing

Chapter 10: Multiprocessors


10.1. Multiprocessor and its Characteristics
10.2. Interconnection Structures for Multiprocessor
10.3. Inter Processor Communication and Synchronization
7) Course title: Data Communication and Computer Networks
Course description
This course will explore the various types of data communication systems, networks and their applications.
Concepts & terminologies like computer networks, layered architecture (OSI & TCP/IP), network
hardware, network software, standardization, network medium, and IP addressing will be explored. The
practical aspect will deal with building small to medium level networks including Cabling, Configuring
TCP/IP, Peer to Peer Networking, Sharing resources, Client Server Networking.

Course objectives
By the end of this course, students will be able to:

 Understand the concepts and principles of data communications and computer networks
 Understand data transmission and transmission media
 Understand Protocols and various networking components
 Understand TCP/IP & OSI Reference Model
 Understand LAN and WAN technologies
 Understand and implement IP addressing.
 Build small to medium level Computer networks
 Understand subnets

Course outline
Chapter 1: Data Communication and Computer Networking Basics
1.1 Data Communication
1.1.1 Definition of Data Communication
1.1.2 Communication Basics
1.1.3 Data Representation techniques
1.1.4 Digital Data Transmission formats
1.1.5 Transmission Impairments
1.1.6 Modes of Data transmission
1.1.7 Elements of Data Communication
1.1.8 Protocols and standards
1.1.9 Circuit switching and Packet switching,
1.2 Computer Network
1.2.1 Network Definition
1.2.2 Network Applications
1.2.3 Network Types
1.2.3.1 Geographical Area
1.2.3.1.1 PAN
1.2.3.1.2 LAN
1.2.3.1.3 MAN
1.2.3.1.4 WAN
1.2.3.2 Architecture
1.2.3.2.1 Peer-to-Peer
1.2.3.2.2 Client/server
1.2.4 Network Components
1.2.4.1 Hardware Components
1.2.4.2 Software Components
1.2.5 Network Topology
1.2.5.1 Physical
1.2.5.2 Logical
1.2.6 Network Models
1.2.6.1 OSI Reference Model
1.2.6.2 TCP/IP Protocol Suite
1.3 Transmission Media
1.3.1 Guided
1.3.1.1 Twisted Pair Cable
1.3.1.2 Coaxial Cable
1.3.1.3 Fiber Optics/Optical Fiber Cable
1.3.2 Unguided
1.3.2.1 Wireless LAN
1.3.2.2 Radio Communication
1.3.2.3 Microwave Communication
1.3.2.4 Infrared Communication
1.3.2.5 Wi-Fi
1.3.2.6 Bluetooth Technology
1.3.2.7 Satellite communication

Chapter 2: Application, Session and Presentation Layers


2.1. Application Layer Introduction
2.2. Client-Server Model
2.3. Application Protocols
2.4. Network Services
2.5. Session Layer
2.6. Presentation Layer

Chapter 3: Transport Layer


3.1. Segmentation
3.2. Addressing
3.3. Multiplexing and DE-multiplexing
3.4. Connectionless/Connection-Oriented
3.5. Unreliable/ Reliable
3.6. Protocols in Transport Layer
3.6.1.UDP
3.6.2.TCP
3.6.2.1 Flow control
3.6.2.2 Error Control
3.6.2.3 Congestion control
3.6.2.4 TCP Variants

Chapter 4: Network Layer Addressing and Routing


4.1. NIC addressing
4.2. Packetizing
4.3. IP addressing
3.3.1 IPv4
4.4. Sub-netting,
4.4.1 Classfull Addressing
4.4.2 Classless Inter Domain Routing(CIDR)
4.4.3 Private and Public IP addresses
4.4.4 NAT
4.4.5 PAT
4.5. Address Mapping
4.5.1 Logical to Physical Address Mapping –ARP
4.5.2 Physical to Logical Address Mapping –RARP
4.6. ICMP:
4.6.1 Types of Messages
4.6.2 Message Format
4.6.2.1 Error Reporting and Query
4.6.2.2 ICMPv6
4.7. IGMP:

4.7.1 Group Management


4.7.2 IGMP Messages
4.7.3 Message Format
4.7.4 IGMP Operation
4.7.5 Encapsulation
4.7.6 Netstat
4.8. Routing and forwarding
4.8.1 Routing algorithms
4.8.2 Routing in the Internet
4.8.3 Unicasting, Multicasting and Broadcasting
4.9. IPv6
4.9.1 Structure
4.9.2 Address space

Chapter 5: Link Layer and Physical Layer


5.1. Link layer services
5.1.1 Faming
5.1.2 Multiple Access Protocols
5.1.2.1 CSMA/CD and CSMA/CA
5.1.3 Link layer addressing
5.1.3.1 MAC address
5.1.4 Data Link Sub Layers
5.1.4.1 Logical Link Control(LLC) and Data Link Control
5.1.5 Data Link and its responsibilities
5.1.5.1. Data Link Control,
5.1.5.2. Error detection and correction
5.1.5.3. Data Link Layer Protocols

5.2. Physical Layer Services


5.2.1 Bits
5.2.2 Ethernet,
5.2.3 Point-to-Point Protocol
5.2.4 LAN Devices: Repeaters, Hubs, Bridges and switches
5.2.5 WAN Devices Routers, Layer 3 Switches and Gateways
5.2.6 Signaling and encoding
5.2.6.1 Signal Encoding Techniques
5.2.7 Physical Layer and its responsibilities
8) Course Title: Data Structures and Algorithms
Course Description
This course focuses on the study of data structures, algorithms and program efficiency. Topics
include: analysis of time and space requirements of algorithms; program efficiency improving
techniques, abstract data types such as linked lists, stacks, queues, trees (traversal, implementations);
simple searching algorithms (linear search, binary search, ... ), simple sorting algorithms (bubble sort,
insertion sort, selection sort, ... ), advanced sorting algorithms (merge sort, quick sort, heap sort ...)

Course Objectives
 To introduce the most common data structures like stack, queue, linked list
 To give alternate methods of data organization and representation
 To enable students use the concepts related to Data Structures and Algorithms to solve real world
problems
 To practice Recursion, Sorting, and searching on the different data structures
 To implement the data structures with a chosen programming language

Course outline
Chapter 1. Introduction to Data Structures and Algorithms (4hr)
1.1. Introduction to Data Structures
1.1.1 Abstract data Types
1.1.2 Abstraction
1.2. Algorithms
1.2.1. Properties of an algorithm
1.2.2. Algorithm analysis concepts
1.2.3. Complexity analysis
1.3. Asymptotic Analysis

Chapter 2: Simple Sorting and Searching Algorithms


2.1. Sorting Algorithms
2.1.1. Insertion sort
2.1.2. Selection Sort
2.1.3. Bubble sort
2.1.4. Pointer sort
2.2. Searching Algorithms
2.2.1. Linear Search (Sequential search)
2.2.2. Binary Search

Chapter 3: Linked Lists


3.1. Review on Pointer and Dynamic Memory allocation
3.2. Singly Linked List and Its Implementation
3.3. Doubly Linked List and Its Implementation
3.4. Circular Linked Lists and Its Implementation
Chapter 4: Stacks
4.1. Properties of Stack
4.2. Array Implementation of Stack
4.3. Linked List Implementation of Stack
4.4. Application of Stack
4.4.1. Evaluation of Algebraic Expression
4.4.2. Infix and Post fix (RPN) conversion
4.4.3. Function calls

Chapter 5: Queue
5.1. Properties of Queue
5.2. Array Implementation of Queue
5.3. Linked List Implementation of Queue
5.4. Double Ended Queue (Deque)
5.5. Priority Queue
5.6. Application of Queues
Chapter 6: Trees
6.1. Binary Tree and Binary Search Trees
6.2. Basic Tree Operations
6.3. Traversing in a Binary tree
6.4. General Trees and Their Implementations

Chapter 7: Graphs
7.1. Introduction
7.2. Directed vs Undirected graph
7.3. Traversing Graph

Chapter 8: Advanced Sorting and Searching algorithms


8.1. Advanced Sorting
8.1.1. Shell sort
8.1.2. Quick sort
8.1.3. Heap Sort
8.1.4. Merge sort
8.2. Advanced Searching
8.2.1. Hashing
9) Course Title: Web Programming
Course Description
Client-server Architecture: Web page Design and development; information Architecture & visualization;
static & dynamic pages, client side programming using scripting languages
(JavaScript), OOP programming using PHP, File manipulation and Management using PHP.
Multimedia web programming, dynamic web content creation; session tracking; Internet
protocols, PHP Web controls, connecting web page to data base, loading and manipulating XML
documents, web security; cryptography theory.

Objectives
The objective of this module is to familiarize students:
 The concepts, principles and methods in programming for web and Internet environment and the
services and technologies available and used on Internet. Specifically, at the completion of this
module the student is able to
 Provide fundamental concepts and skills for the understanding and development of web- based
applications.
 Construct Web sites using HTML and Server Side scripting Languages.
 Implement client-side interactivity
 Use CSS to manage Web site presentation and maintenance
 Select and customize existing technologies to set up and maintain web servers
 Specify, build and manage form and content of information-rich web sites
 Design, implement and evaluate client-server systems following specific protocol specifications,
taking into account concurrency issue.

Course outline
Chapter 1: The world Wide Web
1.1. Course overview
1.2. The Internet and World Wide Web
1.3. Web Hosting and Domain Name Registration

Chapter 2: Hyper Text Markup Language (HTML)


2.1. Introduction to HTML
2.2. HTML tags
2.2.1. Basic HTML tags (HTML, HEAD, BODY,TITLE)
2.2.2. Meta tag
2.2.3. HTML Comments
2.2.4. HTML Link
2.2.5. HTML Text Formatting tags
2.2.6. HTML image inserting tag
2.2.6.1. IMG tag and its attribute
2.2.6.2. Inserting Image Map
2.2.7. HTML Table
2.2.8. Ordered and Unordered List in HTML
2.2.9. HTML Frames
2.2.9.1. Frame Set
2.2.9.2. Internal Frame
2.2.10. HTML Form and Form Controls
2.2.11. Inserting Multimedia in HTML
2.2.11.1. Embed vs Video and Audio tags
2.2.12. HTML Graphics
2.2.12.1. HTML Canvas
2.2.12.2. HTML SVG

Chapter 3: Cascading Style Sheet (CSS)


3.1. CSS Basics
3.1.1. Introduction to CSS
3.1.2. CSS Syntax (CSS Selectors and Declarations)
3.1.3. Attaching CSS with HTML (External , Embedded and Inline)
3.2. Style Sheet Rules
3.2.1. Style Inheritance
3.2.2. Style Rules Precedence
3.3. Style Properties
3.3.1. Foreground and Background Properties
3.3.2. Font and Text Properties
3.3.3. CSS Box Model
3.3.4. Table Styling Properties
3.3.5. More On Styling List (Creating Navigation bars)
3.3.6. Layout and Positioning Properties
3.4. CSS Measuring Units

Chapter 4: Client Side Scripting (JavaScript)


4.1. Introduction to JavaScript
4.2. JavaScript Basic
4.2.1. JavaScript Syntax
4.2.2. Attaching JavaScript to HTML (External, Embedded, Inline)
4.3. JavaScript Comments
4.4. Basic JavaScript Input Output
4.5. JavaScript Data Types and Variables
4.5.1. JavaScript Data types
4.5.2. Variable declaration in JavaScript
4.5.3. Data Type Conversion
4.6. Arithmetic and Logical Operators in JavaScript
4.7. Control Structures (Conditional and Looping Statements)
4.8. Array in JavaScript
4.9. JavaScript Functions
4.10. JavaScript DOM (Document object Model)
4.10.1. Accessing HTML elements in JavaScript
4.10.2. CSS in JavaScript
4.10.3. Events in JavaScript
4.10.4. Handling Exception in JavaScript
4.11. Form Processing using JavaScript
4.12. JavaScript BOM (Browser Object Model)
4.12.1. JavaScript Window
4.12.2. JavaScript Location
4.12.3. JavaScript Location
4.12.4. JavaScript Cookies

Chapter 5: Server-Side Scripting (PHP)


5.1. Introduction to PHP
5.2. Basic PHP Syntax
5.2.1. PHP Comments
5.2.2. Predefined and User Variables in PHP
5.3. PHP Output Statements
5.4. Data Types and Variables in PHP
5.5. Arithmetic and Logical Operators
5.6. Conditional Statements
5.7. Loop Statements in PHP
5.8. Arrays in PHP
5.9. PHP Functions
5.10. Form Processing using PHP
5.11. PHP File Upload
5.12. PHP Cookies and Session
5.13. Database Programming using PHP
5.13.1. Overview on MySQL database
5.13.2. Creating Database Connection in PHP
5.13.3. Sending Query to MySQL Database using PHP
5.13.4. Processing Query Result.
5.14. PHP File Input-Output
5.15. PHP Date and Time
5.16. PHP Mathematical Functions
5.17. PHP OOP

Chapter 6: Advanced JavaScript and XML (AJAX)


6.1. Introduction to AJAX
6.2. XMLHttpRequest Object
6.3. Sending Request to PHP server
6.4. Handling Response from Server

Chapter 7: Introduction to web development frameworks


a. Bootstrap & jQuery
b. Node.js
c. Angular.js
d. React.js
10) Course title: Software Engineering
Course Description
This course provides an introduction to the problems of software development and maintenance and the
processes and methods used to address them. All phases in the software development life cycle will be
introduced. The course also deals with software project planning, cost estimation, tracking and control,
staffing, risk management, and software configuration plan. Covers O-O concepts, tools, development life
cycle, problem solving, modeling, analysis, and design, while utilizing UML (Unified Modeling Language)
for O-O modeling. UML has become the standard notation for modeling O-O systems and is being
embraced by major software developers like Microsoft and Oracle.
Course objectives
On completion of the course successfully, students will be able to:
 Understand the basic principles of Software Engineering
 Write requirements specification documents
 Design a system, component, or process to meet desired needs.
 Verify and validate a Software system practice with effective communication skill.
 Describe in detail the theory, concepts and methods pertaining to the Unified Modeling Language
(UML).
 Create requirements using use case modeling concepts.
 Demonstrate conceptual and technical skills in the analysis, design and implementation of a
software system using Object Oriented Concepts.
 Employ tools and techniques for Object Oriented Software Engineering,
 Demonstrate an ability to adapt and solve problems in software development activities from
specification to testing individually and as part of a team.

Course outline
Chapter 1: Introduction
1.1. Two Orthogonal view of software.
1.2. Software development process models
1.2.1. Software Process
1.2.2.Software life cycle and process models
1.2.3.Process assessment models
1.2.4.Software process metrics
1.3. Object oriented system development methodology.
1.3.1. Why an object oriented
1.3.2.Overview of the unified approach.
1.3.3. An object oriented philosophy
1.3.4.Basic concepts of an object
1.3.5.Attributes of an object, its state and properties.
Chapter 2: Unified Modeling Language (UML)
2.1. Where Can the UML Be Used
2.2. Building Blocks of the UML.
2.3. Relationships in the UML
2.4. Diagrams in the UML.
2.4.1. Use Case Diagrams
2.4.2. Class Diagrams
2.4.3. Sequence diagrams
2.4.4. State chart diagrams
2.4.5. Activity diagrams
2.4.6. Component diagram
2.4.7. Deployment diagram
2.4.8. Diagram extensions
Chapter 3: Requirements Elicitation
3.1. An overview of requirements elicitation.
3.2. Requirements elicitation concepts
3.2.1.Functional requirements
3.2.2.Nonfunctional and pseudo requirements
3.2.3. Levels of description
3.2.4. Correctness, completeness, consistency, clarity, and realism
3.2.5. Verifiability and traceability
3.3. Requirements elicitation activities.
3.3.1. Identifying actors
3.3.2. Identifying scenarios
3.3.3. Identifying use cases
3.3.4. Refining use cases
3.3.5. Identifying relationships among actors and use cases
3.3.6. Identifying initial analysis objects
3.3.7. Identifying nonfunctional requirements
3.4. Managing requirements elicitation
3.4.1.Eliciting information from users:
3.4.2.Validating requirements: Usability testing
3.4.3.Documenting requirements elicitation
Chapter 4: Software Project management
4.1. Responsibility of Software Project Managers
4.2. Project Planning
4.3. The organization of SPMP document
4.4. Project Size Estimation Metrics
4.5. Project Estimation Techniques
4.6. Scheduling, Organization and Team Structures
4.7. Staffing
4.8. Risk Management
4.9. Quality Assurance
4.10.Project Monitoring Plans
Chapter 5: Analysis (8 hours)
5.1. Analysis Concepts
5.1.1 Entity, Boundary, and Control Objects
5.1.2 Association Multiplicity Revisited
5.1.3 Qualified Associations
5.1.4 Generalization
5.2 Analysis Activities: From Use Cases to Objects
5.2.1 Identifying Entity Objects
5.2.2 Identifying Boundary Objects
5.2.3 Identifying Control Objects
5.2.4 Modeling Interactions between Objects: Sequence Diagrams
5.2.5 Identifying Associations
5.2.6 Identifying Attributes
5.2.7 Reviewing the Analysis Model
Chapter 6: Object Oriented System Design
6.1 An overview of system design
6.1.1 System design concepts
6.1.2 System design activities: From objects to subsystems
6.1.3 Documenting system design
6.1.4 An overview of object design
6.1.5 Object design concepts
6.1.6 Object design activities
6.1.7 Managing object design
6.1.8 Documenting object design

Chapter 7: Software Quality Assurance (6 hours)


7.1. An overview of testing
7.2. Testing concepts
7.3. Testing activities
7.4. Managing testing
7.5. Impact of object oriented testing
7.6. Types of Testing

11) Course Title: Design and Analysis of Algorithms

Course Description

The course focuses on the design and analysis of algorithms. Topics Include: Review of the basic data
structures; Design techniques: divide-and-conquer, dynamic programming, greedy algorithms, And graph
algorithms: Elementary graph algorithms, Breadth-first search (BFS), Depth-first search (DFS), Strongly
connected components, Minimum spanning tree, Shortest paths.

Objectives
By the end of this course, students will be able to:
 Perform algorithm analysis using the different techniques;
 Demonstrate the use of algorithm design techniques; and
 Describe the basics of computational complexity
 Apply advanced searching and sorting algorithms
 Develop, and reason about the correctness and performance of algorithms, in particular for string
 Searching and graph manipulation

Course Outline
Chapter 1: Introduction and Elementary Data Structures
1.1. Introduction to Algorithm analysis
1.1.1. Asymptotic Notations
1.1.2. Analysis of Algorithm
1.2. Review of elementary Data Structures
1.2.1. Heaps
1.2.2. Hashing
1.2.3. Set Representation
1.2.3.1. UNION, FIND Operation
Chapter 2: Divide and Conquer
2.1. The General Method of Divide and Conquer
2.2. Binary Search
2.3. Finding Maximum and Minimum
2.4. Merge Sort
2.5. Quick Sort
2.6. Selection Sort
Chapter 3: Greedy Algorithms
3.1. General Characteristic of Greedy Algorithms
3.2. Graph Minimum Spanning Tree (MST) - Kruskal’s and Prims’s Algorithms
3.3. Shortest Paths
3.4. Scheduling
Chapter 4: Dynamic Programming
4.1. Introduction to Dynamic Programming
4.2. All pairs Shortest Path - Floyd-Warshall Algorithm
4.3. Shortest Path - Dijkstra Algorithm
4.4. 0/1 Knapsack
4.5. Depth First Search
Chapter 5: Back Tracking
5.1. 8 Queens Problem
5.2. Graph Coloring
5.3. Hamiltonian Cycle
5.4. Knapsack Problems
5.5. Traveling Salesman Problems

Chapter 6: Introduction to Probabilistic Algorithms - Parallel Algorithms


12) Course title: Introduction to Artificial Intelligence
Course Description
The purpose of this course is to give students an understanding of Artificial Intelligence methodologies,
techniques, tools and results. Students will use python programming language to demonstrate laboratory
exercises. Students will learn the theoretical and conceptual components of this discipline and firm up their
understanding by using AI and Expert System tools in laboratory sessions, projects and home assignments.

Course objectives
At the end of this course the students will be able to:

 Understand reasoning, knowledge representation and learning techniques of artificial intelligence


 Evaluate the strengths and weaknesses of these techniques and their applicability to different tasks
 assess the role of AI in gaining insight into intelligence and perception
 know classical examples of artificial intelligence
 know characteristics of programs that can be considered "intelligent"
 understand the use of heuristics in search problems and games
 know a variety of ways to represent and retrieve knowledge and information
 know the fundamentals of artificial intelligence programming techniques in a modern
programming language
 consider ideas and issues associated with social technical, and ethical uses of machines that involve
artificial intelligence
 Introduce students for powerful learning algorithms and their applications.
 Letting students to develop simple AI powered applications either in robotics, NLP or games.

Course Outline
Chapter 1: Introduction to AI
1.1 Objectives/Goals of AI
1.2 Types of AI(General and Specific AI)
1.3 Approaches to AI – making computer:
1.3.1 Think like a human ( Thinking humanly)
1.3.2 Act like a human (Acting humanly)
1.3.3 Think rationally (Thinking rationally)
1.3.4 Act rationally (Acting rationally)
1.4 The Foundations of AI
1.5 Bits of History and the State of the Art
1.6 Proposing and evaluating Application of AI
Chapter 2: Intelligent Agents
2.1 Foundation of Agents
2.2 Agents and Environments
2.3 Acting of Intelligent Agents (Rationality)
2.4 Structure of Intelligent Agents
2.4.1 Agent Types
2.4.2 Simple reflex agent
2.4.3 Model-based reflex agent
2.4.4 Goal-based agent
2.4.5 Utility-based agent
2.5 Multi agent systems
2.6 Learning agent
Chapter 3: Searching and Planning
3.1 Solving Problems by Searching and planning
3.2 Constraint Satisfaction Problem
3.3 Problem Solving Agents
3.4 Problem spaces and search
3.5 Knowledge and rationality
3.6 Heuristic search strategies
3.7 Search and optimization (gradient descent)
3.8 Adversarial search
3.9 Planning and scheduling
3.10 Avoiding Repeated States
3.11 Dynamic game theory
Chapter 4: Knowledge Representation and Reasoning
4.1 Logic and Inference
4.2 Logical Agents
4.3 Propositional Logic
4.4 Predicate (First-Order)Logic
4.5 Inference in First-Order Logic
4.6 Knowledge Representation
4.7 Knowledge Reasoning
4.8 Bayesian reasoning
4.9 Probabilistic reasoning
4.10 Temporal reasoning
4.11 Knowledge-based Systems
4.12 Case study: Medical diagnosis
Chapter 5: Machine Learning Basics
5.1 Knowledge in Learning
5.2 Learning Probabilistic Models
5.3 Supervised learning
5.3.1 Linear classification models
5.3.2 Probabilistic models
5.4 Unsupervised learning
5.4.1 Clustering models
5.5 Reinforcement learning
5.6 Deep Learning
5.6.1 Neural networks and back-propagation
5.6.2 Convolution neural networks
5.6.3 Recurrent neural networks and LSTMs
Chapter 6: Natural Language Processing (NLP) Basics
6.1 Intro to Natural Language Processing
6.2 Machine learning Application in NLP
6.3 Natural language interaction
6.4 Computer vision and Image processing
6.5 Case study: Sentiment Analysis, speech recognition, Chabot
Chapter 7: Robotic Sensing and Manipulation
7.1 Introduction to robotics
7.1.1 Sensing
7.1.2 Manipulation
7.1.3 Human-robot interaction
7.2 Navigation and path planning
7.2.1 Autonomous robotic systems
Chapter 8: Ethical and Legal Considerations in AI
8.1 Privacy
8.2 Bias
8.3 AI and the future of work
8.4 Appropriate uses of AI

13) Course title: Computer Security


Course Description

To familiarize students with the security issues and technologies involved in modern information systems,
including computer systems and networks and the various ways in which information systems can be
attacked and tradeoffs in protecting networks.

Course objectives

By the end of this course, students will be able to:

 Understand the basic concepts in information security, including security attacks/threats, security
vulnerabilities, security policies, security models, and security mechanisms
 Understand the concepts, principles and practices related to elementary cryptography, including plain
text, cipher-text, the four techniques for crypto-analysis, symmetric cryptography, asymmetric
cryptography, digital signature, message authentication code, hash functions, and modes of encryption
operations.
 Understand issues related to program security and the common vulnerabilities in computer
programs; including buffer overflow vulnerabilities, time-of-check to time-of-use flaws, incomplete
mediation.
 Explain and compare security mechanisms for conventional operating systems, including memory, time,
file, object protection requirements and techniques and protection in contemporary operating systems.
 Understand the basic requirements for trusted operating systems, and describe the independent
evaluation, including evaluation criteria and evaluation process.
 Describe security requirements for database security, and describe techniques for ensuring database
reliability and integrity, secrecy, inference control, and multi-level databases.
 Describe threats to networks, and explain techniques for ensuring network security, including
encryption, authentication, firewalls, and intrusion detection.
 Explain the requirements and techniques for security management, including security policies, risk
analysis, and physical threats and controls.

Course outline
Chapter 1: Introduction to Computer Security (3 hrs)
1.1 Basic concepts of computer security
1.2 Threats, vulnerabilities, controls, risk
1.3 Goals of computer security
1.4 Security attack
1.5 Security policies and mechanisms
1.6 Prevention, detection, and deterrence
1.7 Software security assurance
Chapter 2: Computer Threat (4 hrs)
2.1 Malicious code
2.1.1 Viruses
2.1.2 Trojan horses
2.1.3 Worms
2.1.4 Spy-wares, etc.
2.2 Class of Attacks
2.2.1 Reconnaissance
2.2.2 Access
2.2.3 Denial of Service, etc.
2.3 Program flaws
2.3.1 Buffer overflows
2.3.2 Time-of-check to time-of-use flaws
2.3.3 Incomplete mediation
2.4 Controls to protect against program flaws in execution
2.4.1 Operating system support and administrative controls
2.5 Program Security Defenses
2.5.1 Software development controls and Testing techniques
2.5.2 Database management systems security
Chapter 3: Cryptography and Encryption Techniques (13 hrs)
3.1 Basic cryptographic terms
3.2 Historical background
3.3 Cipher Techniques
3.3.1 Transposition Cipher
3.3.2 Substitution Cipher
3.4 Conventional encryption algorithms
3.5 Cryptanalysis
3.6 Cryptographic Systems
3.6.1 Symmetric key cryptography
3.6.1.1 DES
3.6.1.2 3DES
3.6.1.3 AES
3.6.1.4 Block Cipher Modes
3.6.2 Public key cryptography
3.6.2.1 Diffie-Hellman
3.6.2.2 RSA
3.6.3 Digital Signature
3.6.3.1 Using Public Key
3.6.3.2 Using Message Digest
3.6.3.2.1 MD4family
3.6.3.2.2 SHA family
3.6.3.2.3 RIPEMD
3.6.4 Public key Infrastructure (PKI)
3.6.4.1.1 Trusted Third Party
3.6.4.1.2 Certification
3.6.4.1.3 Key Distribution
3.6.4.1.4 PKI Topology
3.6.4.1.5 Enrollment and Revocation Procedures
Chapter 4: Network Security (4 hrs)
4.1 Network security basics
4.2 Threats on network
4.3 Trust, Weaknesses, Risk and Vulnerabilities
4.4 TCP/IP Suit Weaknesses and Buffer Overflows
4.5 Network security protocols
4.5.1 Application layer security
4.5.1.1 Web security
4.5.1.2 E-mail security
4.5.2 Transport layer security
4.5.3 Network layer security
4.5.4 Link layer security
4.5.5 Physical security
4.6 Wireless security
Chapter 5: Security Mechanisms (3 hrs)
5.1 Firewall
5.2 Proxy server
5.3 IDS/IPS
5.4 Virtual Private network
Chapter 6: Authentication and Access control (3 hrs)
6.1 Authentication basics
6.1.1 Password and Passphrase
6.1.2 Biometrics
6.1.2.1 Fingerprint
6.1.2.2 Palm Scan
6.1.2.3 Hand Geometry
6.1.2.4 Iris Scan
6.1.2.5 Signature Dynamics
6.1.2.6 Voice Print
6.1.2.7 Facial Scan
6.1.2.8 Hand Typography
6.1.3 AAA server
6.1.4 Smart card and memory cards
6.1.5 Kerberos
6.2 Access control basics
6.3 Access control models
6.3.1 Discretionary Access Control (DAC)
6.3.2 Mandatory Access Control (MAC)
6.3.3 Role-Based Access Control (RBAC)
Chapter 7: Administering security (2 hrs)
7.1 Security planning
7.2 Risk analysis
7.3 Security policies
7.4 Cyber security
7.5 Ethics
14) Course title: Network and System Administration
Course Description

This course deals with the concepts and techniques of systems and network administration. This course
instructs students how to administer and manage a modern network by properly planning and implementing
various functions of a Network OS. Key components include how to plan server deployment, server
monitoring and maintenance, application and data provisioning, and providing business continuity and
availability by proper use of security configuration and backup policies. The course material is designed to
provide extensive hands-on experience. Topics include: installation and configuration; the boot process;
user and group administration; file system administration, including quotas, FACLs, RAID and LVM; task
automation; client networking; software management; log files; troubleshooting; Emphasis is also given on
storage, file management system, connectivity, security, troubleshooting, archiving, backing up, directory
services, remote administration, access control lists.
Course objectives
By the end of this course, students will be able to:

 Understand the concepts, principles, and roles of system and network administration.
 Understand how to install/configure Linux operating system
 Understand how to build network services to users
 Understand how to design/implement small to medium level network administration
 Understand how to identify security policies and troubleshooting
 Understand how to apply scripting for system administration

Course outline
Chapter 1: Introduction to System & Network Administration
1.1 Objectives/Goals, Challenges and Common Practices
1.2 Overview of the OSs
1.3 Unix-like Systems Vs Windows Systems
1.4 Linux Distributions and UIs
1.5 Linux Operations Review
1.5.1 File system Hierarchy and Standard
1.5.1.1 Single-rooted hierarchy, Seamless and Extensible File systems
1.5.1.2 Mounting Additional File systems
1.5.1.3 File system Object Oriented Design and File system Standard
1.5.1.4 Unix File and Directory Permissions
1.5.2 Essential Shell Commands
1.5.2.1 Basic File Manipulation Commands and Directory Navigation Commands
1.5.2.2 Advanced File Manipulation Commands (Init, Processes, and Threads)
1.5.3 Advanced Shell Features
Chapter 2: Account and Security Administration, and Access Control (DAC, RBAC)
2.1 Account and security Administration
2.1.1 User and Group Concepts, and User Private Group Scheme
2.1.2 User Administration, Modifying Accounts and Group Administration
2.1.3 Password Aging and Default User Files
2.2 Managing files and folder permission
2.2.1 Managing File Ownership
2.2.2 Controlling Access to files
2.2.3 Managing Disk Quotas
Chapter 3: File Systems and Management of Data Storages
3.1 File system Administration
3.1.1 Partitioning Disks with fdisk and parted
3.1.2 Creating, Mounting and Maintaining File systems
3.1.3 Swap
3.1.4 Determining Disk Usage With df and du
3.1.5 Configuring Disk Quotas
3.2 Logical Volume Management (LVM) and RAID
3.2.1 Implementing LVM, Creating Logical Volumes (LVs), Manipulating VGs & LVs
3.2.2 Advanced LVM Concepts (i.e. system-config-lvm)
3.2.3 RAID Concepts (Creating and Managing a RAID-5 Array)
Chapter 4: Network Management
4.1 TCP/IP Networking
4.2 Configuring a Linux Box for Networking
4.3 Configuring a Linux Box as a Router
4.4 Configuring a Web Server (Apache)
4.5 Configuring a DNS Server (BIND)
4.6 Configuring Mail Transfer Agents (Postfix)
4.7 Configuring a Proxy Caches (Squid)
4.8 Network Configuration (IP Networking and Linux Network Configuration)
4.9 Network Services
4.9.1 Dynamic Host Control Protocol (DHCP)
4.9.2 Network Time Services and Sharing Desktops with VNC
4.9.3 RPC-Based Services and INET Super Server
4.10 TCP/IP Troubleshooting: ping, traceroute, ifconfig, netstat, ipconfig
4.11 Remote Administration with SSH and SCP
4.11.1 Configuration, Telnet Replacement, Secure Copy and Rsync
4.11.2 RSA and DSA Authentication (Password-less Logins)
4.11.3 Remote Command Execution and Port Forwarding
Chapter 5: Installation of Application Server and Management
5.1 DHCP, DNS, Telnet server; compare with other NOS setup of corresponding network services
5.2 Open SSH: Secure Network Communication
5.3 FTP and Setting-up Mail Servers and Client
5.4 Network Information Service (NIS) and Sharing File systems (NFS)
5.5 SAMBA: Linux and Windows File and Printer Sharing
5.6 DNS/BIND: Tracking Domain Names and Address
5.7 Setting up a Firewall and a Web server
Chapter 6: Managing Network Services
6.1 Maintenance Troubleshooting: Common System and Network Problems
6.2 Developing General Strategies
6.3 Resolve Boot Problems, Backup and Restore Data and System Volume
6.4 Using Event Viewer and Troubleshoot Connectivity
Chapter 7: Systems Security (4 hrs)
7.1 Overview, Application Security and Login Security
7.2 Boot Loader Security (LILO and GRUB)
7.3 TCP Wrappers Configuration
7.4 Iptables Firewalling: Preliminaries
7.5 Iptables Scenarios
7.5.1 Packet Filtering
7.5.2 Port-Forwarding/Redirection and NAT/IP Masquerading
7.6 Packet-Processing Model
7.7 Intrusion Detection and Mandatory Access Control (MAC) with LIDS
Chapter 8 - Analytical system administration
8.1 System observation
8.2 Evaluation methods and problems
8.3 Evaluating a hieratical system
8.4 Faults
8.5 Deterministic and stochastic Behaviors

15) Course Title: Compiler Design


Course Description
The course builds on the student's core knowledge of languages, grammars and programming
and provides an opportunity to see how these core areas can come together to form an application area.
Also it imparts the knowledge about the following To learn basic techniques used in compiler
construction such as lexical analysis, top-down and bottom-up parsing, context-sensitive analysis, and
intermediate code generation. To learn basic data structures used in compiler construction such as abstract
syntax trees, symbol tables, three-address code, and stack machines. To learn software tools used in
compiler construction such as lexical analyzer generators, and parser generators.

Course Objectives
By the end of this course, students will be able to:
 Implementing a small compiler using modern compiler writing tools.
 Providing the student with skills and knowledge (such as lexical analysis and parsing) which are
applicable to a broad range of computer science application areas (such as text editors,
information
retrieval, etc...).

Course Outline
Chapter 1: Introduction
1.1. Phases of a Compiler
1.2. Computer Language Representation
1.3. Compiler Construction Tools
Chapter 2: Lexical Analysis
2.1. Token Specification
2.2. Recognition of Tokens
2.3. Recognition of Machines
2.4. NFA to DFA Conversion
2.5. Error Recovery
2.6. A typical Lexical Analyzer Generator
2.7. DFA Analysis
Chapter 3: Syntax Analysis
3.1. Parsing
3.2. Top-down Parsing
3.3. Predictive Parsing
3.4. Top-down Parsing principles of CFG
3.5. Regular Expression Vs Context Free Grammar (CFG)
3.6. Top-down Parsing Implementation - Recursive Decent parsing
3.7. Non-Recursive Predictive Parsing
3.8. LL(1) Grammar
3.9. Bottom-Up Parsing
3.10. Handles
3.11. Stack Implementation of Shift Reduce Parsing
3.12. LR Parers-Implementation - LR Parsing Algorithms
3.13. SLR, CLR and LALR parser
3.3. Error Recovery
3.4. Parser Generator
Chapter 4: Syntax Directed Translation
4.1. Syntax Directed Definitions (SDD)
4.2. Evaluation Order for SDD
4.3. Construction of Syntax Trees
Chapter 5: Type Checking
5.1. Rules of Type Checking
5.2. Type Conversions
Chapter 6: Intermediate Languages
6.1. Three Address Code Rules
6.2. Quadruples
6.3. Declarations
6.4. Declarations in Procedures
6.5. Flow Control Statements
6.6. Back Patching
6.7. Procedure Calls
Chapter 7: Run time- Environments
7.1. Symbol table
7.2. Hash Table
7.3. Representing Scope Information
Chapter 8: Code Generation and Optimization
8.1. Simple Code Generation
8.2. Register Allocation
8.3. DAG Representation
8.4. Peephole Optimization Techniques
16) Course Title: Automata and Complexity Theory
Course Description
This course aims to develop the theoretical foundations of computer science through study of
mathematical
and abstract models of computers and the theory of formal languages. It also, introduces some
fundamental
concepts in automata theory and formal languages including grammar, finite automaton, regular
expression, formal language, push down automaton, and Turing machine. The importance of time and
space complexities, various notations and theorems of Complexity theory.

Course Objectives
By the end of this course, students will be able to:
 On completion of this course students should be able to:
 Introduce concepts in automata theory and theory of computation
 Study the central concepts of automata theory
 Acquire insights into the relationship among formal languages, formal grammars, and automata.
 Identify different formal language classes and their relationships
 Design grammars and recognizer for different formal languages
 Explain Models of Computation, resources (time and space), algorithms, computability, and
complexity.
 Understand Complexity classes, P/NP/PSPACE, reductions, hardness, completeness, hierarchy,
relationships between complexity classes.
 Learn Randomized computation and complexity; Logical characterizations, incompleteness and
approximately.

Course Outline
Chapter 1: Introduction
1.1.1. Alphabets and strings
1.1.2. Languages and Grammars
1.1.3. Automata
1.1.3.1. Finite automata, Deterministic and Non-deterministic finite
automata
Chapter 2: Regular Expression and Regular languages
2.1. Regular expressions
2.2. Connection between regular expression and regular languages
2.3. Regular grammar
2.4. Pumping lemma and non-regular language grammars
Chapter 3: Context free languages
3.1. Context free languages
3.2. Parsing and ambiguity
3.3. Sentential forms
3.4. Derivation tree or parse tree
3.4.1. Left most and right most derivations
3.5. Simplification of context free grammar
3.5.1. Methods for transforming grammars
3.5.2. Chomsky’s hierarchy of grammars
Chapter 4. Push down automata
4.1. Non-deterministic pushdown automata
4.2. Push down automata and context free languages
4.3. Deterministic push down automata
4.4. Deterministic context free languages
Chapter 5: Turing machines
5.1. Standard TM
5.2. Construction of TM
5.3. Turing Decidable and Turing Acceptable
5.4. Undecidable problems
Chapter 6: Computability
6.1. Recursive functions
6.2. Recursive languages and recursive Enumerable languages
Chapter 7: Computational complexity
7.1. Big-O notaions
7.2. Class P vs class NP
7.3. Polynomial time reduction and NP-complete problems
7.4. Cook’s Theorem

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy