Computer Science BSC Course Syllabus (Exit Competency)
Computer Science BSC Course Syllabus (Exit Competency)
Theme Courses
Software Engineering
System Development Web Programming
Database Systems
Computer Programming
Object Oriented Programming
Programming and Algorithms
Design and Analysis of Algorithms
Data Structure and Algorithms
Data Communication and Computer Networking
Computer Networking and Security Computer Security
Network and System Administration
Intelligent Systems Introduction to Artificial Intelligence
Computer Architecture and Operating Operating System
Systems Computer organization and architecture
Automata and Complexity Theory
Compiler and Complexity
Compiler Design
2
Course Syllabus
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Computer Programming
Course Code: Comp2064
Credit Hours: 3 ECTS: 5 Lecture hrs: 2 Lab hrs: 3 Tutorial hrs: 1
Prerequisite: None
Course Category: Compulsory
The course will be given on Year: I Semester: II
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), 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 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
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
3
Course outline
Chapter 1: Introduction to Computer Science and Its Application (4 hrs)
Definition of Computer Science and Its application
Basic organization of Computer System (Hardware & Software)
Chapter 2: Data Representation and Concepts of Programming (4 hrs)
Basic data representation (Types number system)
Binary Arithmetic
Definition and basic concepts of programming
Chapter 3: Introduction to Computer Programming (6 hrs)
Introduction to programming
Problem solving techniques
Flowchart
Pseudo code
Algorithms
Chapter 4: Basics of programming (8 hrs)
Structure of a Program
C++ IDE
Showing Sample program
Keywords, Identifiers, Inputs, Outputs, Comments, Parts of a program
Data Types
Variables
Constants
Operators
o Assignment Operators
o Compound Assignment Operators
o Arithmetic Operators
o Relational Operators
o Increment and Decrement Operators
o Infix and postfix types
o Precedence of Operators
Chapter 5: Control Statements (8 hrs)
If…. else statement
If… elseif… else statement
4
Switch statement
For loop statement
While loop statement
Do…while statement
Teaching-learning methods
Two contact hours of lectures, three contact hours of lab and 1 contact hour of tutorials per week.
Assessment methods
Assignments/quizzes 10%
Lab exams/Project 20%
Mid semester examination 20%
Final examination 50%
References:
1. Ravichandran; “Problem Solving with C++”, Tata Mc. Grew Hill Company
2. Thinking in C++, Volume 2: Practical Programming, Bruce Eckel, President, MindView, Inc., Chuck
Allison, Utah Valley State Colleg
3. E.Balagurusamy, “Programming with C++”, Tata Mc. Grew Hill Company
6
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Computer Programming-II
Course Code: CoSc2011
Credit Hours: 3 ECTS: 5 Lecture hrs: 2 Lab hrs: 3 Tutorial hrs: 1
Prerequisite: Comp2064, Computer Programming
Course Category: Compulsory
The course will be given on Year: II Semester: I
Course Description
This course teaches 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
Learn data structures (such as strings, matrices and arrays), 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
Chapter 1: Arrays, Pointers & Strings (8 hrs)
One-dimensional array
Multi-dimensional array
Address and pointer
Pointer and array
Pointer and function
Pointer and string
Chapter 2: Function and Passing argument to function (8 hrs)
7
Definition of function
Declaration of function
Passing value of a function by Value
Passing value of a function by reference
Chapter 3: Structure (8 hrs)
Specifying simple structure
Defining a structure variable
Accessing structure variable
Chapter 4: File (8 hrs)
File and file management
Teaching-learning methods
Two contact hours of lectures, three contact hours of lab and 1 contact hour of tutorials per week.
Assessment methods
Assignments/quizzes 10%
Lab exams/Project 20%
Mid semester examination 20%
Final examination 50%
References:
1. Ravichandran; “Problem Solving with C++”, Tata Mc. Grew Hill Company
2. Thinking in C++, Volume 2: Practical Programming, Bruce Eckel, President, MindView, Inc., Chuck
Allison, Utah Valley State College
3. E.Balagurusamy, “Programming with C++”, Tata Mc. Grew Hill Company
Laboratory Course Outline
Week 1-3
Definition of function
Declaration of function
Week 4-5
Passing value of a function by Value
Passing value of a function by reference
8
Week 6-7
One-dimensional array
Week 8
Multi-dimensional array
Week 9
Pointer and array
Week 10
Pointer and function
Pointer and string
Week 11-12
Specifying simple structure
Defining a structure variable
Accessing structure variable
Week 13
File and file management
9
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Fundamentals of Database Systems
Course Number: CoSc2041
Credit Hours: 3 ECTS: 5 Lecture: 2hrs Laboratory: 3hrs Tutorial: 2hrs
Prerequisite: None
The course will be given on year II and semester I
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
10
Chapter 1: Introduction to Database Systems (2 hours)
Overview
Basics of Database
File organization verses Database approach
Users and actors of Database system
Characteristics of the Database Approach
Actors on the Scene
Chapter 2: Database System Architecture (2 hours)
Data models, Schemas, and Instances
Over view of data models
Architecture and Data Independence
Database Language and Interface
The Database System Environment
Classification of DBMS
Chapter 3: Database Modeling(6 hours)
The Entity Relationship (ER) Model
The high-level conceptual model
Entities, Attributes, and Keys
Relationships, Associations, and Constraints
The ER Diagrams
Mapping ER-models to relational tables
Enhanced Entity Relationship (EER) Model
Inheritance
Union
Aggregation and Association
Mapping EER model to relational model
The Relational Database Model
The Relational Model Concepts
The Relational Constraints and Relational Database Schemas
The Relational Operations
Chapter 4: Functional Dependency and Normalization (4 hours)
Functional Dependency
Normal Forms
First Normal Form
11
Second Normal Form
Third Normal Form
Boyce Codd Normal Form
Chapter 5: Record Storage and Primary File Organization (6 hours)
Introduction
Operations on Files
Files of Unordered Records (Heap Files)
Files of Ordered Records (Sorted Files)
Hashing Techniques
Index Structure for Files
Types of Single Level Ordered Index
Dynamic Multilevel indexes using B-Trees and B+ Trees
Indexes on Multiple Indexes
Chapter 6: The Relational Algebra and Relational Calculus (5 hours)
Introduction
Relational Algebra
The Relational Calculus
Chapter 7: The SQL Language (7 hours)
Structured Query Language
Datatypes
DDL, DML, TCL and DCL
Basic Queries in SQL
Nested Queries in SQL
Views
Comments
Constraints
12
Evaluation Schemes
(This may vary on the number of students per class, but general evaluation scheme is as below)
Quiz 10%
Mid Exam 30%
Lab Evaluation and Project Work 20%
Final Exam 40%
Text books and References:
Textbook:
1. Raghu Ramakrishnan, Johannes Gehrke. Database Management Systems, McGraw-Hill; 3rd edition,
2002
2. Elmasri, R., & Navathe, S. (2017). Fundamentals of database systems (7th Edition). Pearson.
References
1. Osama Mustafa, Robert P. Lockard. (2019). Oracle Database Application Security, Apress, Berkeley,
CA.J. Date. (2019).
2. Database Design and Relational Theory. 2nd Edition. Apress, Berkeley, CA.
3. Anthony Hack. (2019). SQL Computer Programming for Beginners. Independently published
13
Joins
Week 7: More Complex SQL Retrieval Queries 4
Unions, intersections, differences
Week 8: Views
Week 9: SQL Functions 1
String Functions
Week 10: SQL Functions 2
Numeric/Math Functions
Week 11: SQL Functions 3
Date/Time Functions
Week 12: SQL Functions 4
Conversion Functions
Week 13: SQL Functions 5
Advanced Functions in SQL
Week 14: Complex SQL Queries
Week 15: File Organization and Indexes
14
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Advanced Database Systems
Course Number: CoSc3045
Credit Hours: 3 ECTS: 5 Lecture: 2hrs Laboratory: 3hrs Tutorial: 2hrs
Prerequisite: CoSc2041 Fundamentals of Database Systems
The course will be given on Year III semester I
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 (2 hours)
Overview of Object-Oriented Concepts
Object Identity, Object Structure, and Type Constructors
Encapsulation of Operations, Methods, and Persistence
Type Hierarchies and Inheritance
Chapter 2: Query processing and Optimization (4 hours)
Translating SQL Queries into Relational Algebra
Basic Algorithms for Executing Query Operations
Using Heuristic in Query Optimization
15
Using Selectivity and Cost Estimates in Query Optimization
Semantic Query Optimization
Chapter 3: Transaction Processing Concepts (6 hours)
Introduction
Transaction and System Concepts
Properties of Transaction
Schedules and Recoverability
Serializability of Schedules
Transaction Support in SQL
Chapter 4: Concurrency Control Techniques (6 hours)
Locking Techniques for Concurrency Control
Concurrency Control Based ON Timestamp Ordering
Multi-version Concurrency Control Techniques
Validation (Optimistic) Concurrency Control Techniques
Granularity of Data Items and Multiple Granularity Locking
Using Locks for Concurrency Control in Indexes
Chapter 5: Database Recovery Techniques (5 hours)
Backup and Recovery Concepts
Recovery Concepts Based on Deferred Update
Recovery Concepts Based on Immediate Update
Shadow Paging
The ARIES Recovery Algorithm
Recovery in Multi database Systems
Chapter 6: Database Security and Authorization (5 hours)
Introduction to DB Security Issues
Discretionary Access Control Based on Granting /Revoking of Privileges
Mandatory Access Control for Multilevel Security
Statistical DB Security
Chapter 7: Distributed Database System (4 hours)
Distributed Database Concepts
Data Fragmentation, Replication, and Allocation Techniques for Distributed Database Design
Types of Distributed Database Systems
Query Processing in Distributed Databases
16
Evaluation Schemes
(This may vary on the number of students per class, but general evaluation scheme is as below)
Quiz 10%
Mid Exam 30%
Lab Evaluation and Project Work 20%
Final Exam 40%
17
What are Transactions
Beginning Transaction
Committing or Rolling Back
Creating Named Transactions
Week 5: Transaction Management
Making Use of Transactions
Conditionally Committing or Rolling Back
Transactions with Error Handlers
Week 6: Transaction Management
Automatic Rollback
Nested Transactions
Week 7: Transaction Management
Using Save points
Transactions in Stored Procedures
Week 8: Concurrency Control Techniques
Locking
Timestamping
Week 9: Concurrency Control Techniques
Multi-version Concurrency Control
Locks for Indexes
Week 10: Database Recovery Techniques
Backup and Recovery Concepts
Backup and Recovery
Week 11: Database Security and Authorization
List the different Types of Accounts in SQL Server or Oracle DB
Explain the use of Server Roles
Demonstrate how to Grant and Deny Permissions
Describe Database Roles
Describe How to Work with Database Permissions
Week 12: Distributed Database
Distributed Database Concepts
Data Fragmentation and Replication
Allocation Techniques
18
Query Processing in Distributed Databases
Week 13: Triggers
Triggers
Week 14: Stored Procedures
Stored Procedures
19
University: Dilla University
College/Faculty: School of Computing and Informatics
Course title: Software Engineering
Course code: CoSc3061
Credit hours: 3 ECTS: 5 Contact hrs: 3 hrs Laboratory: 0 hrs Tutorial: 2hrs
Prerequisite: None
Course category: compulsory
The course will be given on Year: III Semester: I
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.
20
Course outline
Chapter 1: Introduction (6 hrs)
Two Orthogonal view of software.
software development process models
Software Process
Software life cycle and process models
Process assessment models
Software process metrics
Object oriented system development methodology.
Why an object oriented
Overview of the unified approach.
An object oriented philosophy
Basic concepts of an object
Attributes of an object, its state and properties.
Chapter 2: Unified Modeling Language (UML) (8 hours)
Where Can the UML Be Used
Building Blocks of the UML.
Relationships in the UML
Diagrams in the UML.
Use Case Diagrams
Class Diagrams
Sequence diagrams
State chart diagrams
Activity diagrams
Component diagram
Deployment diagram
Diagram extensions
Chapter 3: Requirements Elicitation (6 hours)
An overview of requirements elicitation.
Requirements elicitation concepts
Functional requirements
Nonfunctional and pseudo requirements
Levels of description
21
Correctness, completeness, consistency, clarity, and realism
Verifiability and traceability
Requirements elicitation activities.
Identifying actors
Identifying scenarios
Identifying use cases
Refining use cases
Identifying relationships among actors and use cases
Identifying initial analysis objects
Identifying nonfunctional requirements
Managing requirements elicitation
Eliciting information from users:
Validating requirements: Usability testing
Documenting requirements elicitation
Chapter 4: Software Project management (6 hours)
Responsibility of Software Project Managers
Project Planning
The organization of SPMP document
Project Size Estimation Metrics
Project Estimation Techniques
Scheduling, Organization and Team Structures
Staffing
Risk Management
Quality Assurance
Project Monitoring Plans
Chapter 5: Analysis (8 hours)
Analysis Concepts
Entity, Boundary, and Control Objects
Association Multiplicity Revisited
Qualified Associations
Generalization
Analysis Activities: From Use Cases to Objects
Identifying Entity Objects
22
Identifying Boundary Objects
Identifying Control Objects
Modeling Interactions between Objects: Sequence Diagrams
Identifying Associations.
Identifying Attributes
Reviewing the Analysis Model
Chapter 6: Object Oriented System Design (8 hours)
An overview of system design.
System design concepts.
System design activities: From objects to subsystems
Documenting system design
An overview of object design
Object design concepts
Object design activities
Managing object design
Documenting object design
Chapter 7: Software Quality Assurance (6 hours)
An overview of testing
Testing concepts
Testing activities
Managing testing
Impact of object oriented testing
Types of Testing
Text Book
Brahmin, Ali (1999), Object oriented System development, McGraw Hill, USA.
References
1. Martina Seidl, Marion Scholz, Christian Huemer, Gerti Kappel. UML @ Classroom: An
Introduction to Object-Oriented Modeling. 2012. Springer International Publishing AG.
2. Scott, Kendall (2004) Fast Track UML 2.0 Apress USA
3. Booch, Grady Rumbaugh, James Jacobson, Ivar (2005) The Unified Modeling Language User
Guide second edition Addison Wesley Professional USA
Evaluation Schemes
(This may vary on the number of students per class, but general evaluation scheme is as below)
23
Quizzes, assignments and tests 10%
Mid Exam 20
Projects 20%
Final Exam 50%
24
University: Dilla University
College/Faculty: School of Computing and Informatics
Course title: Object Oriented Programming
Course code: CoSc2052
Credit hours: 3 ECTS: 5 lecture hrs: 2 Lab hrs: 3 Tutorial hrs: 2
Prerequisite: CoSc2011, Computer Programming II
Course category: Compulsory
The course will be given on Year: II Semester: II
Course description
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)
Types of programming paradigms
Overview of OO principles
Editing, Compiling and Interpreting
Chapter 2: Objects and Classes (6 hrs)
Defining a class
Creating an Object
Instantiating and using objects
Printing to the Console
Methods and Messages
25
Parameter Passing
Comparing and Identifying Objects
Destroying Objects
Enumerated Types
Instance fields
Constructors and Methods
Access Modifiers
Encapsulation
Chapter 3: Inheritance and Polymorphism (8 hrs)
Inheritance
Casting
Method Overriding and Overloading
Polymorphism
Super
The Object Class
Abstract Classes
Interfaces
Using Interfaces
Chapter 4: Exception Handling (4 hrs)
Exceptions Overview
Catching Exceptions
The finally Block
Exception Methods
Declaring Exceptions
Defining and Throwing Exceptions
Errors and Runtime Exceptions
Chapter 5: Packages (4 hrs)
Packages
The import Statement
Static Imports
CLASSPATH and Import
Defining Packages
Package Scope
26
Chapter 6: Data structures (6 hrs)
The Set
Set Implementation Classes
The List
List Implementation Classes
The Queue
Queue Implementation Classes
Map/ dictionary
Teaching- learning methods
Two contact hours of lectures, three hours of lab and two hours of tutorials per week.
Assessment methods
Quiz/ Assignment 10%
Lab Exam/Project 20%
Mid Exam 20%
Final Exam 50%
Text book
1. H.M. Deitel, P.J. Deitel, Java How to Program. 8th ed. Prentice Hall
2. Eckel, Bruce. Thinking in Java. 4th Ed. New Jersey: Prentice Hall
27
Laboratory Outline
Week 1: Introduction to Object-Oriented Programming
Software Installation and Environment Setup
Week 2-4: Basics of Programming
Variable types and identifiers
Number types, strings, constants
Operators and operator precedence
Type Conversion/ Casting Chapter
Decision Statements
If statement
Switch statement
Looping Statements
For loop
While, Do while loop
Week 5: Objects and Classes
Defining a class
Creating an Object
Instantiating and using objects
Week 6: Objects and Classes
Instance fields
Constructors and Methods
Week 7: Objects and Classes
Access Modifiers
Encapsulation
Week 8: Inheritance
Inheritance
Casting
Method Overriding and Overloading
Week 9: Polymorphism and Abstract
Polymorphism
Super
The Object Class
Abstract Classes
Week 10: Interfaces
28
Interfaces
Using Interfaces
Week 11: Exception Handling
Exceptions Overview
Catching Exceptions
The finally Block
Exception Methods
Declaring Exceptions
Defining and Throwing Exceptions
Errors and Runtime Exceptions
Week 12: Packages
Packages
The import Statement
Static Imports
CLASSPATH and Import
Defining Packages
Package Scope
Week 13: Data structures
Set
List
Stack & Queue
Map/Dictionary
29
University: Dilla University
College/Faculty: School of Computing and Informatics
Course title: Data Communication and Computer Networks
Course code: CoSc2034
Credit hours: 3 ECTS: 5 Contact hours: 2 Lab hrs: 3 Tutorial hrs: 2
Prerequisite: None
Course category: Compulsory
The course will be given on Year: II Semester: II
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 (5 hours)
Data Communication
Definition of Data Communication
Communication Basics
Data Representation techniques
Digital Data Transmission formats
Transmission Impairments
30
Modes of Data transmission
Elements of Data Communication
Protocols and standards
Circuit switching and Packet switching,
Computer Network
Network Definition
Network Applications
Network Types
Geographical Area
o PAN
o LAN
o MAN
o WAN
Architecture
o Peer-to-Peer
o Client/server
Network Components
Hardware Components
Software Components
Network Topology
Physical
Logical
Network Models
OSI Reference Model
TCP/IP Protocol Suite
Transmission Media
Guided
o Twisted Pair Cable
o Coaxial Cable
o Fiber Optics/Optical Fiber Cable
Unguided
o Wireless LAN
o Radio Communication
31
o Microwave Communication
o Infrared Communication
o Wi-Fi
o Bluetooth Technology
o Satellite communication
Chapter 2: Application, Session and Presentation Layers (5 hours)
Application Layer Introduction
Client-Server Model
Application Protocols
Network Services
Session Layer
Presentation Layer
Chapter 3: Transport Layer (6 hours)
Segmentation
Addressing
Multiplexing and DE-multiplexing
Connectionless/Connection-Oriented
Unreliable/ Reliable
Protocols in Transport Layer.
UDP
TCP
o Flow control
o Error Control
o Congestion control
o TCP Variants
Chapter 4: Network Layer Addressing and Routing (8 hours)
NIC addressing
Packetizing
IP addressing
IPv4
Sub-netting,
Classfull Addressing
Classless Inter Domain Routing(CIDR)
Private and Public IP addresses
32
NAT
PAT
Address Mapping
Logical to Physical Address Mapping –ARP
Physical to Logical Address Mapping –RARP
ICMP:
Types of Messages
Message Format
Error Reporting and Query
ICMPv6
IGMP:
Group Management
IGMP Messages
Message Format
IGMP Operation
Encapsulation
Netstat
Routing and forwarding
Routing algorithms
Routing in the Internet
Unicasting, Multicasting and Broadcasting
IPv6
structure
Address space
Chapter 5: Link Layer and Physical Layer (8 hours)
Link layer services
Faming
Multiple Access Protocols
o CSMA/CD and CSMA/CA
Link layer addressing
o MAC address
Data Link Sub Layers
o Logical Link Control(LLC) and Data Link Control
Data Link and its responsibilities
33
o Data Link Control,
o Error detection and correction
o Data Link Layer Protocols
Physical Layer Services
Bits
Ethernet,
Point-to-Point Protocol
LAN Devices: Repeaters, Hubs, Bridges and switches
WAN Devices Routers, Layer 3 Switches and Gateways
Signaling and encoding
o Signal Encoding Techniques
Physical Layer and its responsibilities
Teaching-learning methods
Two contact hours of lectures, three contact hours of lab and two hours of tutorials per week.
Assessment methods
Assignments/quizzes 15%
Lab Assessments 15%
Mid semester examination 20%
Final examination 50%
Textbooks:
1. Data Communications and Networking, 5th Edition, Behrouz A. Forouzan
Reference books:
1. Andrew S. Tanenbaum, David J. Wetherall, Computer Networks (5th Edition), Pearson; 2010.
2. William Stallings, Data and Computer Communications, 10th Edition, Pearson, 2014
Laboratory Outline
Week 1: Designing cables
Crossover cable
Straight-through cable
Rollover cable
Week 2: Creating Peer to Peer network
Building a Switched based network
Sharing Files and Printers between Windows OSs
34
Sharing Files between Windows OSs
Week 3: Study of IPv4 Address
Classification of IP Addresses
Subnetting
Supernetting
NIC addressing
Week 4: Study of Basic Network Configuration commands
ping
tracert/traceroute
ifconfig/ipconfig
netstat
telnet
ssh
ftp
nslookup
pathping
Week 5: Configuring a Switch
Week 6: Configuring a VLAN
Week 7: Configuring a Router
Week 8: Configuring NAT
Week 9: Configuring Routing Information Protocol (RIPv2)
Week 10: Configuring Interior Gateway Protocol (IGRP)
Week 11: Configuring Open Shortest Path First (OSPF)
Week 12: Configuring Enhanced Interior Gateway Routing Protocol (EIGRP)
Week 13: Configuring Border Gateway Protocol (BGP)
Week 14: Configuring Intermediate System-to-Intermediate System (IS-IS)
35
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Operating System
Course Code: CoSc3023
Credit Hrs. 3 ECTS: 5 Lecture Hrs. 2 Lab Hrs. 3 Tutorial Hrs. 2
Prerequisite: CoSc2022, Computer Organization and Architecture
Course Category: Compulsory
The course will be given on Year III Semester I
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 (4hr)
Role and purpose of operating systems
History of operating system development
Types of operating systems
36
Chapter 2: Processes and process management (7hr)
Process and Thread
The concept of multi-threading
Inter process communication
Race conditioning
Critical Sections and mutual exclusion
Process Scheduling
Preemptive and Computer organization and Architecture non preemptive scheduling
Scheduling policies
Dead lock
Deadlock prevention
Deadlock detection
Deadlock avoidance
Chapter 3: Memory Management (7hr)
Over view of physical memory and memory management
Hardware overlays
Swapping
Partitioning
Paging and Segmentation
Page replacement and replacement policies
Working sets and thrashing
Caching
Chapter 4: Device Management (4hr)
Characteristics of parallel and serial devices
Buffering strategies
Direct memory access
Recovery from failure
Chapter 5: File Systems (6hr)
Fundamental concepts on file
Data and meta data
Operations, organization and buffering in file
Sequential Vs Consequential data
Content and structure of directories
File system techniques
37
Partitioning
Mounting and unmounting
Virtual file system
Memory-mapped files
Special purpose file systems
Naming, searching and backup strategies
Chapter 6: Security and protection (4hr)
Overview of system security
Policies and mechanism of system security
System protection, authentication
Models of protection
Memory protection
Encryption
Recovery management
Teaching - Learning methods Assessment method
Test #1 10%
Test # 2 10%
Lab Examination 10%
Assignments (two) 20%
Quizzes, reading assessment and tutorial contributions 15%
Final examination 35%
Total 100%
38
Operating Laboratory Outline
39
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Computer Organization and Architecture
Course Code: CoSc 2022
Credit Hrs. 3 ECTS: 5 Lecture Hrs. 3 Lab Hrs. 0 Tutorial Hrs. 2
Prerequisite: EENG2041-Digital Logic Design
Course Category: Compulsory
The course will be given on Year II Semester II
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 (4hr)
Logic gates and Boolean algebra
Combinational circuit
Flip flops
Sequential circuit
40
Chapter 2: Number system and codes (4hr)
Data types
Complements
Fixed and floating point representation
Codes
Chapter 3: Common digital components (6hr)
Integrated circuit
Decoder, multiplexer and registers
Binary counter
Memory units
Chapter 4: Register Transfer Language and Micro Operations (6hr)
Register transfer languages
Bus and memory transfer
Arithmetic and logic operations
Shift micro operations
Chapter 5: Basic Computer Organization and Design (6hr)
Instructional code
Computer Register
Computer Instructions
Timing and control
Memory reference instructions
Design of Basic computers
Design of accumulator logic
Chapter 6: Central processing unit (4hr)
General register organization
Stack organization
Instruction formats
Addressing modes
Data transfer and manipulation
Program control
Characteristics of RISC and CISC
Chapter 7: Memory Organization (6hr)
Memory Hierarchy
Main memory
41
Cache memory
Mapping functions
Direct mapping
Associative mapping
Set associative mapping
External memory
Magnetic disks
RAID technology
Optical disks
Magnetic tapes
Chapter 8: Input-Output Organization (4hr)
Peripheral devices
Input-output interface
Asynchronous data transfer
Mode of transfer
Priority interrupts
Direct memory access (DMA)
Input-Output Controller (IOC)
Serial communication
Chapter 9: Pipeline and Vector Processing (4hr)
Pipeline
Parallel Processing
Arithmetic Pipeline
Instruction Pipeline
Vector Processing
Array Processing
Chapter 10: Multiprocessors (4hr)
Multiprocessor and its Characteristics
Interconnection Structures for Multiprocessor
Inter Processor Communication and Synchronization
42
Teaching - Learning methods Assessment method
Test1, Test2 30%
Assignments 20%
Final Exam 50%
Total 100%
Teaching materials Required Texts:
Text book:
William Stalling, Computer Organization and Architecture: Designing for Performance, 7 th
Edition, Prentice Hall, 2006
Reference books:
1. Andrew S. Tannenbaum, Structured Computer Organization, 4 th Edition, Prentice Hall, 1999
2. Mano M, Morris, Computer System Architecture, 3rd Edition, 1993
3. Ram, Computer Fundamentals, Architecture and Organization, 2007
43
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Automata and Complexity Theory
Course Code: CoSc 3101
Credit Hrs. 3 ECTS: 5 Lecture Hrs. 2 Lab Hrs. 3 Tutorial Hrs. 2
Prerequisite: None
Course Category: Compulsory
The course will be given on Year III Semester I
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 (4hr)
Alphabets and strings
Languages and Grammars
Automata
44
Finite automata, Deterministic and Non-deterministic finite automata
Chapter 2: Regular Expression and Regular languages (4hr)
Regular expressions
Connection between regular expression and regular languages
Regular grammar
Pumping lemma and non-regular language grammars
Chapter 3: Context free languages (6hr)
Context free languages
Parsing and ambiguity
Sentential forms
Derivation tree or parse tree
Left most and right most derivations
Simplification of context free grammar
Methods for transforming grammars
Chomsky‟s hierarchy of grammars
Chapter 4: Push down automata (4hr)
Non-deterministic pushdown automata
Push down automata and context free languages
Deterministic push down automata
Deterministic context free languages
Chapter 5: Turing machines (4hr)
Standard TM
Construction of TM
Turing Decidable and Turing Acceptable
Undecidable problems
Chapter 6: Computability (4hr)
Recursive functions
Recursive languages and recursive Enumerable languages
Chapter 7: Computational complexity (6hr)
Big-O notaions
Class P vs class NP
Polynomial time reduction and NP-complete problems
Cook‟s Theorem
45
Teaching - Learning methods
Two contact hours of lectures, three hours of lab and two hours of tutorials per week. Students do home
assignments.
Assessment method
Quizzes 20%
Assignments 30%
Test 10%
Final Exam 40%
Total 100%
46
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Data Structures and Algorithms
Course Code: CoSc2092
Credit Hrs. 3 ECTS: 5 Lecture Hrs. 2 Lab Hrs. 3 Tutorial Hrs. 2
Prerequisite: CoSc2011 Computer Programming II & MATH 2053-Discrete Mathematics and
Combinatorics
Course Category: Compulsory
The course will be given on Year II Semester II
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)
Introduction to Data Structures
Abstract data Types
Abstraction
Algorithms
Properties of an algorithm
Algorithm analysis concepts
Complexity analysis
Asymptotic Analysis
47
Chapter 2: Simple Sorting and Searching Algorithms (4hr)
Sorting Algorithms
Insertion sort
Selection Sort
Bubble sort
Pointer sort
Searching Algorithms
Linear Search (Sequential search)
Binary Search
Chapter 3: Linked Lists (4hr)
Review on Pointer and Dynamic Memory allocation
Singly Linked List and Its Implementation
Doubly Linked List and Its Implementation
Circular Linked Lists and Its Implementation
Chapter 4: Stacks (4hr)
Properties of Stack
Array Implementation of Stack
Linked List Implementation of Stack
Application of Stack
Evaluation of Algebraic Expression
Infix and Post fix (RPN) conversion
Function calls
Chapter 5: Queue (4hr)
Properties of Queue
Array Implementation of Queue
Linked List Implementation of Queue
Double Ended Queue (Deque)
Priority Queue
Application of Queues
Chapter 6: Trees (4hr)
Binary Tree and Binary Search Trees
Basic Tree Operations
Traversing in a Binary tree
General Trees and Their Implementations
48
Chapter 7: Graphs (4hr)
Introduction
Directed vs Undirected graph
Traversing Graph
Chapter 8: Advanced Sorting and Searching algorithms (4hr)
Advanced Sorting
Shell sort
Quick sort
Heap Sort
Merge sort
Advanced Searching
Hashing
Quizzes 20%
Assignments 10%
Project 20%
Final Exam 50%
Total 100%
Teaching materials Reference books:
Robert Lafore, “Data Structures and Algorithms in JAVA, 2nd Ed.”, Sams Publishing
Jean Paul Tremblay, Paul G. Soreson, “An Introduction to Data Structures with
Applications”, Mc. Graw Hill Computer Science Series
Horowitz, S.Sahni and Dinesh Mehta. Fundamentals of data structures in C++, W.H Freeman
and Company (1995)
Sanjay Pahuja, A practical approach to data structures and algorithms, New age
Internationapublishers, 2008
49
Week1 Introduction
Overview of C++, and programs to demonstrate C++ classes, structures and
pointer
Week2 Implementation of Array ADT and String AD
Week3 Implementing simple sorting algorithms
Selection sort, bubble sort, insertion sort
Week4 Implementing searching algorithms
Linear search, binary search
Week5 Implementing linked list
Singly linked list, doubly linked list, circular linked list
Week6 Stack
Array Implementation of stack
Linked List implementation of stack
Week7 Queue
Array Implementation of queue
Linked list implementation of queue
Week8 Double ended queue (Deque) and Priority queue
Week9 Tree
Implementing Binary search tree
Week10 Graph
Implementing graph traversal algorithms
Week11 Advanced sorting algorithms
Shell sort, Heap sort
Week12 Advanced sorting algorithms
quick sort, merge sort,
Week13 Advanced searching algorithm
Hashing (open and closed hashing)
50
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Web Programming
Course Code: CoSc3086
Credit Hrs. 4 ECTS: 7 Lecture Hrs. 3 Lab Hrs. 3 Tutorial Hrs. 1
Prerequisite: None
Course Category: Compulsory
The course will be given on Year III Semester II
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 (4hr)
Course overview
The Internet and World Wide Web
51
Web Hosting and Domain Name Registration
Chapter 2: Hyper Text Markup Language (HTML) (10hr)
Introduction to HTML
HTML tags
Basic HTML tags (HTML, HEAD, BODY,TITLE)
Meta tag
HTML Comments
HTML Link
HTML Text Formatting tags
HTML image inserting tag
o IMG tag and its attribute
o Inserting Image Map
HTML Table
Ordered and Unordered List in HTML
HTML Frames
o Frame Set
o Internal Frame
HTML Form and Form Controls
Inserting Multimedia in HTML
o Embed vs Video and Audio tags
HTML Graphics
o HTML Canvas
o HTML SVG
Chapter 3: Cascading Style Sheet (CSS) (10hr)
CSS Basics
Introduction to CSS
CSS Syntax (CSS Selectors and Declarations)
Attaching CSS with HTML (External , Embedded and Inline)
Style Sheet Rules
Style Inheritance
Style Rules Precedence
Style Properties
Foreground and Background Properties
Font and Text Properties
52
CSS Box Model
Table Styling Properties
More On Styling List (Creating Navigation bars)
Layout and Positioning Properties
CSS Measuring Units
Chapter 4: Client Side Scripting (JavaScript) (8hr)
Introduction to JavaScript
JavaScript Basic
JavaScript Syntax
Attaching JavaScript to HTML (External, Embedded, Inline)
JavaScript Comments
Basic JavaScript Input Output
JavaScript Data Types and Variables
JavaScript Data types
Variable declaration in JavaScript
Data Type Conversion
Arithmetic and Logical Operators in JavaScript
Control Structures (Conditional and Looping Statements)
Array in JavaScript
JavaScript Functions
JavaScript DOM (Document object Model)
Accessing HTML elements in JavaScript
CSS in JavaScript
Events in JavaScript
Handling Exception in JavaScript
Form Processing using JavaScript
JavaScript BOM (Browser Object Model)
JavaScript Window
JavaScript Location
JavaScript Location
JavaScript Cookies
Chapter 5: Server-Side Scripting (PHP) (8hr)
Introduction to PHP
Basic PHP Syntax
53
PHP Comments
Predefined and User Variables in PHP
PHP Output Statements
Data Types and Variables in PHP
Arithmetic and Logical Operators
Conditional Statements
Loop Statements in PHP
Arrays in PHP
PHP Functions
Form Processing using PHP
PHP File Upload
PHP Cookies and Session
Database Programming using PHP
Overview on MySQL database
Creating Database Connection in PHP
Sending Query to MySQL Database using PHP
Processing Query Result.
PHP File Input-Output
PHP Date and Time
PHP Mathematical Functions
PHP OOP
Chapter 6: Advanced JavaScript and XML (AJAX) (4hr)
Introduction to AJAX
XMLHttpRequest Object
Sending Request to PHP server
Handling Response from Server
Chapter 7: Introduction to web development frameworks (4hr)
Bootstrap & jQuery
Node.js
Angular.js
React.js
Teaching - Learning methods
Three contact hours of lectures, three hours of lab and 1 hours of tutorials per week. Students do home
assignments.
54
Assessment method
Quizzes 20%
Assignments 10%
Project 20%
Final Exam 50%
Total 100%
Week 1 Lab environment set up (installing text editor software, web browser, server software)
Introduction to HTML
Basic HTML tags and their attribute HTML, HEAD, TITLE, BODY
HTML comment
Meta tag Creating link
Text formatting tags Headings, Paragraphs Font
Text styling tags
Week 2 Image in HTML Inserting Image Using Image as a link
Image map
Week 3 HTML Table
Table row, Table header and Table data Attributes of table
Attributes of table row and cell
Using header, body and footer in HTML table HTML Lists
Unordered list
Ordered List
Week 4 Frames in HTML
Frameset , Nested frame ,Internal frame HTML form
Form attributes Input elements
Inserting multimedia in HTML Inserting video
Inserting audio
Week 5 CSS
Linking CSS with HTML (embedded, inline and external CSS) Styling background, text, font,
Styling Link, Table
CSS class and ID
Week 6 CSS box model (margin, padding and boarder)
55
CSS display, visibility, position and z-index
Week 7 JavaScript syntax
Linking JavaScript with HTML (embedded, inline, external) The first code in JavaScript
“Hello, World”
JavaScript comments
Basic Input output in JavaScript JavaScript variables
Arithmetic and assignment operators in JavaScript Comparison and logical operators in
JavaScript Data type conversion in JavaScript
Week 8 Conditional Statements
If, if..else,if...elseif..else ad switch statement Looping statements
For, while and do..while
Break and continue statements
Week 9 Array in JavaScript
Manipulating elements of an array Function in JavaScript
Week 10 JavaScript DOM
Accessing Document elements CSS in JavaScript
Event Handling
JavaScript BOM (Window, Location, History, Cookies) Form processing and validation in
JavaScript
Week11 PHP Syntax Output statements Comments
PHP Variable and Data type conversion
Control structures (Conditional and Looping statements)
Week12 Array Function
Form Processing File uploading
Week13 Session and Cookie Database programming
Week14 File management in PHP Date and Time
Math functions
Week15 Ajax programming
Week16 Introduction to Web development frameworks Bootstrap, node.js, angular.js
56
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Design and Analysis of Algorithms
Course Code: CoSc 3094
Credit Hrs. 3 ECTS: 5 Lecture Hrs. 2 Lab Hrs. 0 Tutorial Hrs. 0
Prerequisite: CoSc 2092-Data Structure and Algorithms
Course Category: Compulsory
The course will be given on Year III Semester II
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 (6hr)
Introduction to Algorithm analysis
Asymptotic Notations
Analysis of Algorithm
Review of elementary Data Structures
Heaps
Hashing
Set Representation
o UNION, FIND Operation
Chapter 2: Divide and Conquer (6hr)
57
The General Method of Divide and Conquer
Binary Search
Finding Maximum and Minimum
Merge Sort
Quick Sort
Selection Sort
Chapter 3: Greedy Algorithms (6hr)
General Characteristic of Greedy Algorithms
Graph Minimum Spanning Tree (MST) - Kruskal‟s and Prims‟s Algorithms
Shortest Paths
Scheduling
Chapter 4: Dynamic Programming (6hr)
Introduction to Dynamic Programming
All pairs Shortest Path - Floyd-Warshall Algorithm
Shortest Path - Dijkstra Algorithm
0/1 Knapsack
Depth First Search
Chapter 5: Back Tracking (6hr)
Queens Problem
Graph Coloring
Hamiltonian Cycle
Knapsack Problems
Traveling Salesman Problems
Chapter 6: Introduction to Probabilistic Algorithms - Parallel Algorithms (2hr)
58
Manna, Z. (1974) Mathematical Theory of Computation McGraw-Hill.
Baase, S. (1988) Computer Algorithms: Introduction to Design and Analysis, 2nd ed.
Addison-Wesley Publishing Company.
T. H. Cormen, C. E. Leiserson, R. L. Rivest. Introduction to Algorithms The MIT Press,
Cambridge, Massachusetts, 3rd edition.
59
University: Dilla University
College/Faculty: School of Computing and Informatics
Course Title: Compiler Design
Course Code: CoSc 4104
Credit Hrs.: 3 ECTS: 5 Lecture Hrs.: 2 Lab Hrs.: 3 Tutorial Hrs. 2
Prerequisite: CoSc 3101-Automata and Complexity Theory
Course Category: Compulsory
The course will be given on Year IV Semester II
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 (2hr)
Phases of a Compiler
Computer Language Representation
Compiler Construction Tools
Chapter 2: Lexical Analysis (4hr)
Token Specification
Recognition of Tokens
60
Recognition of Machines
NFA to DFA Conversion
Error Recovery
A typical Lexical Analyzer Generator
DFA Analysis
Chapter 3: Syntax Analysis (6hr)
Parsing
Top-down Parsing
Predictive Parsing
Top-down Parsing principles of CFG
Regular Expression Vs Context Free Grammar (CFG)
Top-down Parsing Implementation - Recursive Decent parsing
Non-Recursive Predictive Parsing
LL(1) Grammar
Bottom-Up Parsing
Handles
Stack Implementation of Shift Reduce Parsing
LR Parers-Implementation - LR Parsing Algorithms
SLR, CLR and LALR parser
Error Recovery
Parser Generator
Chapter 4: Syntax Directed Translation (4hr)
Syntax Directed Definitions (SDD)
Evaluation Order for SDD
Construction of Syntax Trees
Chapter 5: Type Checking (4hr)
Rules of Type Checking
Type Conversions
Chapter 6: Intermediate Languages (4hr)
Three Address Code Rules
Quadruples
Declarations
Declarations in Procedures
Flow Control Statements
61
Back Patching
Procedure Calls
Chapter 7: Run time- Environments (4hr)
Symbol table
Hash Table
Representing Scope Information
Chapter 8: Code Generation and Optimization (4hr)
Simple Code Generation
Register Allocation
DAG Representation
Peephole Optimization Techniques
Teaching materials
Text Books:
T1: Alfred Aho, Ravi Sethi, V.Jeffery Ullman D. “COMPILERS PRINCIPLES, TECHINQUES
AND TOOLS “, Addison- Wesley, 1988.
Reference Books:
Allen Holub l. “Compiler Design in C”, Prentice Hall of India. 1990.
Charles N.Fischer Richard J.Leblanc, “Crafting a compiler with C”, Benjamin Cummings, 1991
62
Compiler design laboratory manual
63
University: Dilla University
College/Faculty: School of Computing and Informatics
Course title: Network and System Administration
Course code: COSC4036
Credit hours: 3 ECTS: 5 Contact hrs: 2 Lab hrs: 3 Tutorial hrs: 1
Prerequisite: CoSc2034-Data Communication and Computer Networks, CoSc3023-Operating
system Course category: compulsory
The course will be given on Year: IV Semester: II
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 (3 hrs)
Objectives/Goals, Challenges and Common Practices
Overview of the OSs
Unix-like Systems Vs Windows Systems
Linux Distributions and UIs
64
Linux Operations Review
File system Hierarchy and Standard
o Single-rooted hierarchy, Seamless and Extensible File systems
o Mounting Additional File systems
o File system Object Oriented Design and File system Standard
o Unix File and Directory Permissions
Essential Shell Commands
o Basic File Manipulation Commands and Directory Navigation Commands
o Advanced File Manipulation Commands (Init, Processes, and Threads)
Advanced Shell Features
Chapter 2: Account and Security Administration, and Access Control (DAC, RBAC) (3 hrs)
Account and security Administration
User and Group Concepts, and User Private Group Scheme
User Administration, Modifying Accounts and Group Administration
Password Aging and Default User Files
Managing files and folder permission
Managing File Ownership
Controlling Access to files
Managing Disk Quotas
Chapter 3: File Systems and Management of Data Storages (4hr)
File system Administration
Partitioning Disks with fdisk and parted
Creating, Mounting and Maintaining File systems
Swap
Determining Disk Usage With df and du
Configuring Disk Quotas
Logical Volume Management (LVM) and RAID
Implementing LVM, Creating Logical Volumes (LVs), Manipulating VGs & LVs
Advanced LVM Concepts (i.e. system-config-lvm)
RAID Concepts (Creating and Managing a RAID-5 Array)
Chapter 4: Network Management (6 hrs)
TCP/IP Networking
Configuring a Linux Box for Networking
Configuring a Linux Box as a Router
65
Configuring a Web Server (Apache)
Configuring a DNS Server (BIND)
Configuring Mail Transfer Agents (Postfix)
Configuring a Proxy Caches (Squid)
Network Configuration (IP Networking and Linux Network Configuration)
Network Services
Dynamic Host Control Protocol (DHCP)
Network Time Services and Sharing Desktops with VNC
RPC-Based Services and INET Super Server
TCP/IP Troubleshooting: ping, traceroute, ifconfig, netstat, ipconfig
Remote Administration with SSH and SCP
Configuration, Telnet Replacement, Secure Copy and Rsync
RSA and DSA Authentication (Password-less Logins)
Remote Command Execution and Port Forwarding
Chapter 5: Installation of Application Server and Management (6 hrs)
DHCP, DNS, Telnet server; compare with other NOS setup of corresponding network services
Open SSH: Secure Network Communication
FTP and Setting-up Mail Servers and Client
Network Information Service (NIS) and Sharing File systems (NFS)
SAMBA: Linux and Windows File and Printer Sharing
DNS/BIND: Tracking Domain Names and Address
Setting up a Firewall and a Web server
Chapter 6: Managing Network Services (4 hrs)
Maintenance Troubleshooting: Common System and Network Problems
Developing General Strategies
Resolve Boot Problems, Backup and Restore Data and System Volume
Using Event Viewer and Troubleshoot Connectivity
Chapter 7: Systems Security (4 hrs)
Overview, Application Security and Login Security
Boot Loader Security (LILO and GRUB)
TCP Wrappers Configuration
Iptables Firewalling: Preliminaries
Iptables Scenarios
Packet Filtering
66
Port-Forwarding/Redirection and NAT/IP Masquerading
Packet-Processing Model
Intrusion Detection and Mandatory Access Control (MAC) with LIDS
Chapter 8 - Analytical system administration (2 hrs)
System observation
Evaluation methods and problems
Evaluating a hieratical system
Faults
Deterministic and stochastic Behaviors
Lab Contents:
Window server
Part 1: Server Installation and Configuration
Introducing Windows Server 2016
Installing Windows Server 2016
Configuring Windows Server 2016 Basic Settings
Configuring Server roles and services
Managing hard drives and volumes
Part 2: Network Users, Resources, and Special Server Roles
Understanding and configuring Active Directory Domain services
Creating Active Directory groups, Organizational Units, and Sites
Adding client computers and member servers to the domain
Deploying group policy and network access
Working with network shares and the distributed file system
Part 3: Account and Security Administration, and Access Control
Account and security Administration
Managing files and folder permission
Part 4: Systems Security
TCP Wrappers Configuration
Iptables Firewalling: Preliminaries
Part 5: Analytical system administration
System observation
Evaluation methods and problems
Part 6: Linux Server configuration
67
Ubuntu or Debian latest version installation
Revising Linux fundamental
Automating tasks using scripting language
DNS Master and Slave servers
Updating Microsoft DNS server
Configuring and run servicer software like
o Monitoring (with Icinga and Collectd)
o Backup and restore (with Bacula)
o File serving (with Samba)
o Virtualisation (with ProxMox)
o Email (with Postfix and Dovecot or Courier)
Assessment methods
Assignment/quizzes 10 %
Mid semester examination 20%
Project 20%
Final examination 50%
Text books:
o Principles of Network and System Administration, (2nod Edition), John Wiley and Sons Ltd,
Mark Burgess, 2004.
References:
1. The Practice of System and Network Administration: by Thomas A. Limoncelli Christina J. Hogan,
Strata R. Chalup, (3rd Edition)
2. TCP/IP Network Administration” (3rd Edition), O‟Reilly and Associates Inc., Craig Hunt, 2002.
3. Running Linux, (5th Edition), O‟Reilly and Associates Inc., Matthias Kalle Dalheimer and Matt
Welsh, 2007.
4. Essential System Administration (ESA), Aeleen Frisch, 3rd edition, O'Reilly.
5. Unix and Linux System Administration Handbook'' fourth edition by Nemeth et
6. Linux Fundamentals'', Paul Cobbaut, downloadable from http://linux-training.be.
7. Introducing Windows Server 2016 handbook published by Microsoft Press A division of microsoft
Corporation One Microsoft Way Redmond, Washington 98052-6399
68
University: Dilla University
College/Faculty: School of Computing and Informatics
Course title: Introduction to Artificial Intelligence
Course code: COSC3112
Credit hours: 3 ECTS: 5 Contact hrs: 2 Lab hrs: 3 Tutorial hrs: 2
Prerequisite: CoSc2092-Data Structures and Algorithms, STAT2016- Probability and Statistics
Course category: compulsory
The course will be given on Year: III Semester: II
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 (3 hrs)
Objectives/Goals of AI
Types of AI(General and Specific AI)
69
Approaches to AI – making computer:
Think like a human ( Thinking humanly)
Act like a human (Acting humanly)
Think rationally (Thinking rationally)
Act rationally (Acting rationally)
The Foundations of AI
Bits of History and the State of the Art
Proposing and evaluating Application of AI
Chapter 2: Intelligent Agents (4 hrs)
Foundation of Agents
Agents and Environments
Acting of Intelligent Agents (Rationality)
Structure of Intelligent Agents
Agent Types
Simple reflex agent
Model-based reflex agent
Goal-based agent
Utility-based agent
Multi agent systems
Learning agent
Chapter 3: Searching and Planning (6 hrs)
Solving Problems by Searching and planning
Constraint Satisfaction Problem
Problem Solving Agents
Problem spaces and search
Knowledge and rationality
Heuristic search strategies
Search and optimization (gradient descent)
Adversarial search
Planning and scheduling
Avoiding Repeated States
Dynamic game theory
Chapter 4: Knowledge Representation and Reasoning (8 hrs)
Logic and Inference
70
Logical Agents
Propositional Logic
Predicate (First-Order)Logic
Inference in First-Order Logic
Knowledge Representation
Knowledge Reasoning
Bayesian reasoning
Probabilistic reasoning
Temporal reasoning
Knowledge-based Systems
Case study: Medical diagnosis
Chapter 5: Machine Learning Basics (3 hrs)
Knowledge in Learning
Learning Probabilistic Models
Supervised learning
Linear classification models
Probabilistic models
Unsupervised learning
Clustering models
Reinforcement learning
Deep Learning
Neural networks and back-propagation
Convolution neural networks
Recurrent neural networks and LSTMs
Chapter 6: Natural Language Processing (NLP) Basics (3 hrs)
Intro to Natural Language Processing
Machine learning Application in NLP
Natural language interaction
Computer vision and Image processing
Case study: Sentiment Analysis, speech recognition, Chabot
Chapter 7: Robotic Sensing and Manipulation (3 hrs)
Introduction to robotics
Sensing
Manipulation
71
Human-robot interaction
Navigation and path planning
Autonomous robotic systems
Chapter 8: Ethical and Legal Considerations in AI (2 hrs)
Privacy
Bias
AI and the future of work
Appropriate uses of AI
Assignment/quizzes 10%
Mid semester examination 20%
Project/Lab 20%
Final examination 50%
Total 100%
Text books:
Russell, S. and P. Norvig (1995) Artificial Intelligence: A Modern Approach Prentice-Hall
References:
1. Luger, G. (2002) Artificial Intelligence, 4th ed. Addison-Wesley.
2. Bratko, Ivan (1990) PROLOG Programming for Artificial Intelligence, 2nd ed. Addison- Wesley,
1990
3. Winston, P.H. (1992) Artificial Intelligence Addison-Wesley. Ginsberg, M.L. (1993) Essentials
of Artificial Intelligence. Morgan Kaufman.
72
University: Dilla University
College/Faculty: School of Computing and Informatics
Course title: Computer Security
Course code: CoSc4031
Credit hours: 3 ECTS: 5 Contact hrs: 2 Lab hrs: 3 Tutorial hrs: 1
Prerequisite: CoSc2034-Data Communications and Computer Networks
Course category: compulsory
The course will be given on Year: IV Semester: I
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
73
analysis, and physical threats and controls.
Course Outline
Chapter 1: Introduction to Computer Security (3 hrs)
Basic concepts of computer security
Threats, vulnerabilities, controls, risk
Goals of computer security
Security attack
Security policies and mechanisms
Prevention, detection, and deterrence
Software security assurance
Chapter 2: Computer Threat (4 hrs)
Malicious code
Viruses
Trojan horses
Worms
Spy-wares, etc.
Class of Attacks
Reconnaissance
Access
Denial of Service, etc.
Program flaws
Buffer overflows
Time-of-check to time-of-use flaws
Incomplete mediation
Controls to protect against program flaws in execution
Operating system support and administrative controls
Program Security Defenses
Software development controls and Testing techniques
Database management systems security
Chapter 3: Cryptography and Encryption Techniques (13 hrs)
Basic cryptographic terms
Historical background
Cipher Techniques
74
Transposition Cipher
Substitution Cipher
Conventional encryption algorithms
Cryptanalysis
Cryptographic Systems
Symmetric key cryptography
o DES
o 3DES
o AES
o Block Cipher Modes
Public key cryptography
o Diffie-Hellman
o RSA
Digital Signature
o Using Public Key
o Using Message Digest
MD4family
SHA family
RIPEMD
Public key Infrastructure (PKI)
o Trusted Third Party
o Certification
o Key Distribution
o PKI Topology
o Enrollment and Revocation Procedures
Chapter 4: Network Security (4 hrs)
Network security basics
Threats on network
Trust, Weaknesses, Risk and Vulnerabilities
TCP/IP Suit Weaknesses and Buffer Overflows
Network security protocols
Application layer security
o Web security
o E-mail security
75
Transport layer security
Network layer security
Link layer security
Physical security
Wireless security
Chapter 5: Security Mechanisms (3 hrs)
Firewall
Proxy server
IDS/IPS
Virtual Private network
Chapter 6: Authentication and Access control (3 hrs)
Authentication basics
Password and Passphrase
Biometrics
o Fingerprint
o Palm Scan
o Hand Geometry
o Iris Scan
o Signature Dynamics
o Voice Print
o Facial Scan
o Hand Typography
AAA server
Smart card and memory cards
Kerberos
Access control basics
Access control models
Discretionary Access Control (DAC)
Mandatory Access Control (MAC)
Role-Based Access Control (RBAC)
Chapter 7: Administering security (2 hrs)
Security planning
Risk analysis
Security policies
76
Cyber security
Ethics
Lab content: using OpenSSL
Lab 1: Installing and configuring OpenSSL
Lab 2: Introduction and commands used in OpenSSL
Lab 3: Encryption using conventional algorithms
Lab 4: Symmetric encryption with OpenSSL
Lab 5: Encrypting file using DES
Lab 6: Asymmetric encryption with OpenSSL L
Lab 7: Encrypting file using RSA
Lab 8: Combination of DES and RSA
Lab 9: Digital Certification with OpenSSL
Lab 10: Digital Signature
Assessment methods
Assignment/quizzes 10%
Mid semester examination 20%
Project /Lab 20%
Final examination 50%
Total 100%
Text books:
Security in Computing, Charles P. Pfleeger and Shari L. Pfleeger. (3rd edition), Prentice-Hall, 2003
References:
1. Computer Security, Dicter Gouman, John Wiley & Sons
2. Computer Security: Art and Science, Mathew Bishop, Addison-Wesley
3. Principles of Information Security, Whitman, Thomson.
4. Network security, Kaufman, Perl man and Speciner, Pearson Education
th
5. Cryptography and Network Security, 5 Edition William Stallings, Pearson Education
6. Introduction to Cryptography, Buchmann, Springer.
77