Course Outline For Core Competency Courses
Course Outline For Core Competency Courses
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 6: Structure
6.1. Specifying simple structure
6.2. Defining a structure variable
6.3. Accessing structure variable
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
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
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 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
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
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
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
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 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
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
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
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
Course objectives
At the end of this course the students will be able to:
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
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
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
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