Introduction

The Bachelor of Science in Computer Science is the oldest undergraduate degree program in Makerere University School of Computing and Informatics Technology. It was launched at the inception of Institute of Computer Science in 2001

The objectives of the program are to:

  1. Develop professionals with theoretical and practical skills in Computer Science
  2. Strengthen institutional capacity and building in Computer Science in tertiary institutions, the private and public sector
  3. Build capacity with a practical orientation needed to link up the Computer Science sector with Government and Industry under the broader perspective of Information and Communication Technology (ICT)
  4. Provide most of the ICT professionals needed in Uganda and neighboring countries.

The Program

Target Group

The program targets two categories of people. These are A’ level leavers and diploma holders in relevant disciplines.

Nature of the Program

The program is full time that is conducted both in the day and in the evening.

Duration

The duration of the program is three academic years consisting of six semesters and two recess terms. Each semester lasts seventeen (17) weeks two of which are for examinations. Each recess term is 10 weeks.

Tuition Fees

Tuition fees for privately sponsored students shall be 3,024,000 Uganda Shillings per year for Ugandans and 4,536,000 Uganda Shillings per year for non-Ugandans.

Regulations

Admission requirements

To be admitted to the B.Sc (Computer Science) program, a candidate must satisfy the general admission requirements for Makerere University. In addition, the following regulations shall hold:

  1. Direct Entry

    Candidates seeking admission through this avenue must have obtained:

    • At least a principle pass in Mathematics in the Uganda Advanced Certificate of Education (UACE) or its equivalent
    • At least two principle passes at the same sitting in UACE in any of the following subjects: - Economics, Entrepreneurship, Geography, Physics, Chemistry and Biology
    • A minimum weighted point set by the Makerere University Admissions Board

      For purposes of computing weighted points, the A’ level subjects shall be grouped and weighted as per the University weighting system.

      Group Weight Subjects
      Essential 3 Any two best done subjects among: Mathematics, Physics, Chemistry, Biology, Technicial Drawing
      Relevant 2 Any other best done subject of all A’ level subjects.
      Desirable 1 General Paper, Subsidiary Mathematics, Subsidiary ICT
      Others 0.5 All others.
  2. Diploma holders

    For a candidate to be admitted via the diploma scheme, he/she must:

    1. Have at least 5 passes got at the same sitting of Uganda Certificate of Education or its equivalent, with credits in English and Mathematics
    2. Have at least 1 principal pass and 2 subsidiary passes from the same sitting of the Uganda Advanced Certificate of Education (UACE) or its equivalent
    3. Have a Diploma in Computer Science and Information Technology of Makerere University or have at least a Second class (lower division) diploma in Computer Science, Engineering, Information Technology, and Statistics or any other diploma with Mathematics, Computer Science, or Information Technology as one of the subjects. The diploma must be from an Institution recognized by the National Council for Higher Education in Uganda.

Progression

Progression shall be regarded as normal, probationary or discontinuation as per the standard of Makerere University Senate guidelines.

Normal Progress

This occurs when a student passes each course taken with a minimum Grade Point of 2.0

Probationary

This is a warning stage and occurs if either the cumulative grade point average (CGPA) is less than 2.0 and /or the student has failed a core course. Probation is waived when these conditions cease to hold

Discontinuation

When a student accumulates three consecutive probations based on the CGPA or the same core course(s), he /she shall be discontinued

Retaking a Course

A student may re-take any course when it is offered again in order to pass if the student had failed the course. A student may take a substitute elective, where the student does not wish to re-take a failed elective

Weighting System

The weighting unit is the Credit Unit (CU). The Credit Unit is a contact hour per week per semester. A contact hour is equal to:

  1. one lecture hour (LH)
  2. two practical hours (PH)
  3. two tutorial hours (TH)

Semester Load and Minimum Graduation Load

The normal semester load is between 15 and 21 credit units. The minimum graduation load is 120 credit units of which 106 credit units are from core course units. The remaining 14 credit units are to be gotten from elective course units in semesters where elective courses are offered.

Course Assessments

Each course will be assessed on the basis of 100 marks with proportions as follows:- Coursework – 40% and Examination 60%

A minimum of two course assignments/tests shall be required per course

Course work shall consist of individual tests, group assignment and presentations in each semester.

Course Outline

Semester 1 (5 Courses)

Code Name LH PH TH CH CU Type
Cores:- (5 Cores)
CSC 1100 Computer Literacy 30 60 - 60 4 Core
BIS 1104 Communication Skills for IT 45 30 - 60 4 Core
CSC 1104 Computer Organization & Architecture 60 - 30 45 4 Core
CSC 1108 Individual Project I 15 90 - 60 4 Core
CSC 1107 Structured Programming 30 30 - 45 3 Core
Total Credit Units 19

Semester 2 (5 Courses)

Code Name LH PH TH CH CU Type
Cores:- (5 Cores)
BIS 1206 System Analysis and Design 45 - 30 60 4 Core
MTH 1203 Calculus I 45 - 30 45 4 Core
CSC 1214 Object Oriented Programming 30 60 - 60 4 Core
MTH 2203 Numerical Analysis I 45 - 30 45 3 Core
BIS 1204 Data & Information Management I 30 60 - 60 4 Core
Total Credit Units 19

Year I Recess term

Code Name LH PH TH CH CU Type
CSC 1304 Practical Skills Development 15 90 - 75 5 Core
CSC 1303 Cisco Certified Network Associate 150 - 75 5 Audited
Total Credit Units 5

Semester 3 (5 Courses)

Code Name LH PH TH CH CU Type
Cores:- (4 Cores)
CSC 2100 Data Structures and Algorithms 45 - 30 60 4 Core
CSC 2114 Artificial Intelligence 30 30 - 45 3 Core
BSE 2103 Computer Networks 45 30 - 60 4 Core
MTH 3105 Discrete Mathematics 30 - 30 45 3 Core
Electives:- (1 Elective)
BSE 2105 Formal Methods 45 - 30 60 4 Elective
CSC 2113 Software Engineering 45 - 30 60 4 Elective
Total Credit Units 18

Semester 4 (5 Courses)

Code Name LH PH TH CH CU Type
Cores:- (5 Cores)
CSC 2200 Operating Systems 45 - 30 60 4 Core
CSC 1209 Logic Programming 30 30 - 45 3 Core
CSC 2209 Systems Programming 45 - 30 60 4 Core
CSC 2210 Automata, Complexity & Computability 45 - - 45 3 Core
BIT 2207 Research Methodology 30 - 30 45 3 Core
Total Credit Units 17

Year 2 Recess term

Code Name LH PH TH CH CU Type
CSC 2303 Field Attachment - 300 - 75 5 Core
Total Credit Units 5

Semester 5 (5 Courses)

Total Credit Units
Code Name LH PH TH CH CU Type
Cores:- (4 Cores)
CSC 3110 User Interface Design 45 30 - 60 4 Core
BAM 2102 Entrepreneurship Principles 30 - 30 45 3 Core
CSC 3112 Principles of Programming Languages 45 - - 45 3 Core
CSC 3118 Computer Science Project I - - 150 75 5 Core
Electives :- (1 Elective)
BIS 3100 Modeling and Simulation 30 30 - 45 3 Elective
CSC 3121 Computer Graphics 30 30 - 45 3 Elective
CSC 3115 Advanced Programming 45 30 - 45 3 Elective
MTH 3107 Linear Programming 30 - - 30 3 Elective
Total Credit Units 18

Semester 6 (5 Courses)

Code Name LH PH TH CH CU Type
Cores:- (3 Cores)
BSE 2206 Data Communications 45 30 - 60 4 Core
CSC 3205 Compiler Design 45 30 - 45 3 Core
CSC 3211 Computer Science Project II - - 150 75 5 Core
Electives :- (2 Elective)
CSC 3207 Computer Security 45 30 - 45 3 Elective
BIS 3205 Data Warehousing & Business Intelligence 45 30 - 60 4 Elective
BSE 3202 Distributed Systems Development 45 30 - 60 4 Elective
CSC 3217 Emerging Trends in Computer Science 45 45 - 45 3 Elective
Total Credit Units 19/20

Detailed Curriculum

Year 1

Semester 1

(a) Description

In this course, students are to learn about the basic organization, concepts and terminologies in a computerized environment. They are also to get an in depth understanding of common computer applications. The use of related applications in different operating systems will be explored.

(b) Aims

The aims of the course unit are to:

  • Equip students with basic knowledge about computer organization
  • Equip students with skills of using common office applications
  • Expose students to different operating systems
  • Equip students with skills of how to use the Internet
  • Equip students with knowledge about common text editors in different operating systems

(c) Learning outcomes

By the end of the course unit, the student should be able to:

  • Describe the different parts of a computer
  • Describe the historical evolution of computers
  • Competently use the common office applications in at least two operating systems
  • Competently use common text editors in at least two operating systems

(d) Teaching and learning pattern

Teaching will be by lectures and laboratory demonstrations/practicals

(e) Indicative content

  • General computer organization
  • Historical perspectives of computing
  • Common Microsoft office packages
  • Office packages in other operating systems
  • Text editors
  • Common Linux commands
  • Using the web

(f) Assessment method

The assessment will be in form of tests and assignments (40%) and final written exam (60%)

(g) Reading List

  1. Computer Literacy by John Preston, Robert Ferrett and Shelly Gaskin, 2007.
  2. Practical Computer Literacy by Jelne Janrich and Dan Oja, 2001
  3. Computer Literacy for IC3 Unit 1: Computer Fundamentals QA 76.3 P743 2010
  4. Computer Literacy for IC3 Unit 2: Using productivity Software QA 76.3 P743 2010
  5. Computer Literacy Basics: A Comprehensive Guide to IC3 QA76.3 M67 2010

(a) Description

This course provides students with skills of effective communication. Emphasis is provided on communications in today’s business environment that has increasingly been shaped by Information technology. Students will be taught how to effectively communicate technical information to lay audiences using oral, written and non-verbal communication.

(b) Aims

The aims of the course unit are to:

  • Ensure that students develop and apply effective communication and writing skills in management of information systems.
  • To familiarize students with the concept and Effective communication, reports and business documents required effectively in the management of information systems.
  • To teach students the principles of designing formal and informal reports to meet the needs of a variety of information system managers.
  • To enable students understand the importance of effective organization and personal communication.
  • To enable students prepare some business documents in the organization / institutions.
  • To provide tools and strategies with which students can systematically improve their communication skills.

(c) Learning outcomes

By the end of the course unit, the student should be able to:

  • Identify, explain, and demonstrate different types of communication techniques.
  • Organise and present ideas individually and as part of a team.
  • Demonstrate interpersonal skills including business etiquette, active listening, team participation, and leadership skills.
  • Identify ways of communicating effectively through an appropriate balance between interpersonal and technical capabilities.
  • Produce a text-based report or proposal, using Microsoft Word.
  • Apply a universal process that enables you to solve communication problems now and throughout your entire carrier

(d) Teaching and learning pattern

This is a very practical course. Students will be required to do real life examples and illustrations to enable them apply knowledge with the business context.

(e) Indicative content

  • Understanding the Foundations of Business Communication
    • Effective Business Communication 3
    • Communicating in Teams and Mastering Listening and Nonverbal Communication
  • The Writing Process
    • Planning Business Messages
    • Writing Business Messages
    • Completing Business Messages
  • Crafting Brief Messages
    • Crafting Messages for Electronic Media
    • Writing Routine and Positive Messages
    • Writing Negative Messages
    • Writing Persuasive Messages
  • Planning, Writing, and Completing Reports and Proposals
  • Designing and Delivering Oral and Online Presentations
    • Creating and Delivering Oral and Online Presentations
    • Enhancing Presentations with Slides and Other Visuals
    • Writing Employment Messages

(f) Assessment method

Students should be encouraged to analyse business domain problem and come up with communications to address the needs as part of their coursework assessment (20%). Other assessments include test (20%) and exams (60%).

(g) Reading List

  1. COURTLAND L. BOVÉE and JOHN V. THILL, Business Communication Today. 8th edition. Upper Saddle River, NJ: Prentice Hall International Inc. (Call No. HF5718 Bov2005)
  2. Locker, Kitty O. 2006. Business and Administrative Communication. 7th edition. Boston, Mass.: Irwin/McGraw-Hill(Call No. : HF5718 Loc2006)
  3. Mastering Business communication By L. A Woolcott & W.R Unwin, Macmillan Publishing House
  4. Effective Business communication by Asha Kaul, Printice of India
  5. Business & Administrative communication by Kitty O. Locker (1995) 3rd Edition.
  6. Effective Business communication. Getting the message around by Waswa Balunywa and Ngoma Muhammad

(a) Description

This course introduces the logical architecture and organization of computer systems. It highlights the lower end operations in a typical computer as well as the way computers manage their resources during operation. The course opens up a student to be an informed user of the computer rather than a passive recipient of the computer services.

(b) Aims

The aims of the course unit are to:

  • To introduce to students the concepts of computer organization.
  • To highlight to students the way computers process and store the data.
  • To highlight internal management issues in computer systems.

(c) Learning outcomes

By the end of the course unit, the student should be able to:

  • Explain the difference between Computer Organisation and Computer Architecture.
  • Discuss how information is processed in the computer from the time it is input to the time of output.
  • Explain how the Micro processers operate.
  • Explain the .difference between the various representation codes i.e. ASCII and EBCDIC.

(d) Teaching and learning pattern

Teaching will be in terms of lectures as well as tutorials.

(e) Indicative content

  • Data Representation:

    Integer Formats, Binary, Octal and Hexadecimal Systems, Negative integers and 2’s Complement, Floating Point Formats, BCD Formats, Alphanumeric Memory, Memory Management Hardware Codes.

  • Basic Digital Circuits:

    Logic gates, Karnaugh maps, Combinatorial Circuits, Binary Adders, Multiplexers and Demultiplexers, Comparators, Decoders and Encoders, Code Converters, ROMS and PLA’s, Sequential Circuits, Flip Flops and Latches, R-S flip flops, J-K flip flops, T flip Flops, D flip flops, Registers, Shift Registers and Data Transmission, Sequential Network Design.

  • Micro Computer Architecture:

    CPU, Memory, I/O Devices and Interfaces, System Bus, Examples of CPU Structures, The Intel / Pentium CPU, The Z- 80 or Motorolla, Machine Language Instructions, Instruction Formats and Addressing Modes.

  • The Processing Elements:

    Macroinstruction execution, Internal Bus Transfers, Detailed Internal Architecture, Microcontrol, Hardwired Control, Microprogramd Control, Reduced Instruction Set Computers.

  • I/O Programming:

    programd I/O, Interrupt I/O, Polling, Priority Interrupt System, Direct Memory Access Memory Management: Memory Hierarchy, Main Memory, I/O processors.

  • Memory Systems and, Auxiliary Memory, Associative Memory, Cache Memory, Virtual

(f) Assessment method

Assessment will be in form of tests and assignments (40%) and final examination (60%)

(g) Reading List

  1. Computer Systems Architecture by M. Morris Mano, Prentice Hall, 1993
  2. Structured Computer Organization by Andrew S. Tanenbaum, Prentice Hall 1984.
  3. Computer Systems Concepts and Design by Glenn B. Gibson, Prentice Hall, 1991
  4. Computer Organization and Architecture by William Stallings, Prentice Hall 2003.
  5. Computer Architecture and Organization by J.Hayes McGraw Hill

(a) Description

This course is to give students an experience of developing simple but complete applications. Focus will be put on programming and program documentations as well as realization of the objectives.

(b) Aims

The aims of the course unit are to:

  • To practically give students skills of integrating different concepts of programming into a single application.
  • To introduce the student to hands on aspects of software development.
  • To nurture the student’s ability to independently read different sources of literature so as to identify what (s)he can use to develop his/her application.

(c) Learning outcomes

By the end of the course unit, the student should be able to:

  • Apply the skills he /she has acquired to integrate different concepts of programming into a single application
  • Apply the skills he / she has acquired to software development
  • Solve real life problems and challenges

(d) Teaching and learning pattern

Learning will be largely by self - study/ research. Students will be given programming Assignments that will be submitted after a specific period of time. The skills which that will be expected in the assignment will be indicated to the student. A member of staff will meet students at the issue of each of the assignment and address any outstanding issues as well as expectations. A minimum of six assignments will be given.

(e) Indicative content

  • The main content in the course is translation of a real life problem into a working computer program.

(f) Assessment method

Two assignments (each taking two weeks) and three assignments (each taking 3 weeks) will be given. The first two assignments will constitute the coursework (40%) while the last three assignments will constitute the examination mark (60%).

(g) Reading List

  1. Students can read any literature like books and online tutorials that can help in addressing the problem in the project at hand.

(a) Description

The course is to create a strong base in the principles and practice of functional programming. A high level programming language like C is to be used. Students are to cover both theoretical principles and hands on practical skills. The main concepts to cover include program structure, data structures, syntactical and semantic correctness, planning and segmentation in programming as well as working with files.

(b) Aims

The aims of the course unit are to:

  • Comprehensive knowledge about structured oriented programming
  • Knowledge in planning and organization of programming projects.
  • Knowledge and techniques of evaluating syntactic and semantic correctness of a computer program.
  • Strong practical basis in programming

(c) Learning outcomes

By the end of the course unit, the student should be able to:

  • Understand the basic terminology used in computer programming
  • Write, compile and debug programs in C language
  • Use different data types in a computer program
  • Design programs involving decision structures, loops and functions
  • Explain the difference between call by value and call by reference
  • Use different data structures and create/update basic data files

(d) Teaching and learning pattern

The course will be taught with a big practical component. Students will be expected to have one supervised practical sessions per week. They will so be given several programming assignments some of which will be marked and contribute to the coursework scores.

(e) Indicative content

  • Program structure
  • Variables and Operators
  • Conditional statements
  • Looping statements
  • Arrays and strings
  • Functions
  • Advanced data types
  • Pointers
  • Dynamic memory allocation and dynamic structures
  • Working with files
  • GUI

(f) Assessment method

Assessment will be in form of at least one (practical) assignment and one test (40%), a practical exam - (30%) and a final written examination (30%).

(g) Reading List

  1. Brian W. Kernighan, Dennis M. Ritchie: C Programming Language; Prentice Hall, 2000.
  2. Samuel P. Harrison: C- A Reference Manual (5th Edition); Prentice Hall, 2002.
  3. Keith P. LaBudde: Structured programming concepts; McGraw Hill 1987
  4. Donald Ervin Knuth: The Art of Computer Programming; McGraw Hill 2006
  5. K.N King: C Programming- A modern Approach

Semester 2

(a) Description

The course is to give an in depth understanding of Object Oriented programming. It is to cater for Object Oriented programming practices like inheritance, interfaces, exception handling, action handling, security, software reuse and robustness.

(b) Aims

The aims of the course unit are to:

  • Move the students’ programming skills from basic to advanced
  • Avail students with skills to handle non- functional program aspects like robustness and security.
  • Train students to develop complete computer applications

(c) Learning outcomes

Students who successfully complete this course of study will be able to:

  • Explain the principles of the object oriented programming paradigm specifically including abstraction, encapsulation,inheritance and polymorphism
  • Use an object oriented programming language, and associated class libraries, to develop object oriented programs
  • Design, develop, test, and debug programs using object oriented principles in conjuncture with an integrated development environment
  • Construct appropriate diagrams and textual descriptions to communicate the static structure and dynamic behaviour of an object oriented solution
  • Describe and explain the factors that contribute to a good object oriented solution, reflecting on your own experiences and drawing upon accepted good practices.

(d) Teaching and learning pattern

This will include lectures, practicals and lab assignments

(e) Indicative content

  • The object oriented paradigm
  • Classes and objects
  • Inheritance and visibility modifiers
  • Interfaces and abstract classes
  • Graphical user interface and action handlers
  • Graphical user interface and action handlers
  • Exception handling
  • Working with files
  • Working with databases
  • Sessions and user management

(f) Assessment method

The assessment will be done by tests and take home assignments (40%), practical examination (30%) and written examination (30%)

(g) Reading List

  1. Java Software Solution: Foundations of Program Design (6th Edition) by John Lewis and William Loftus, Addison- Wesley, 2009.
  2. A programr’s Guide to Java TM Certification: A comprehensive Primer by Khalid A. Mughal and Rolf W. Rasmussen, Addison-Wesley, 1999
  3. Java Programming by Kim N King McGraw Hill 2000
  4. Java Enterprise in a Nutshell by David Flanagan
  5. Problem solving with Java by Elliot Koffman

(a) Description

The course is to sharpen the students’ skills in using numerical approaches to solving mathematical/real life problems. The focus will be on the ability to correctly formulate numerical problems and schemes that solve them. Emphasis will be put on the precision and robustness of the schemes.

(b) Aims

The aims of the course unit are to:

  • To provide a solid basis on the numerical approaches to computational problem solving;
  • To provide students with problem analysis and solving skills to be able to handle typical computational problems in practice.

(c) Learning outcomes

By the end of the course, the student should be able to:

  • Derive schemes for different set ups of numerical problems
  • Test for convergence of different schemes
  • Correctly use the schemes to generate solutions to the numerical problems to the required precision

(d) Teaching and learning pattern

The course will be taught theoretically. The developed schemes can be implemented and run in any programming language.

(e) Indicative content

  • Errors and their propagations
  • Langrange’s Interpolating Polynomial
  • Iterated interpolation
  • Finite difference interpolating polynomials
  • Numerical Differentiation
  • Numerical Integration
  • Adoptive iteration
  • Solutions to non- linear equations
  • Systems of non -linear equations
  • Systems of linear equations

(f) Assessment method

At least 2 (1 hour) tests and 1 assignment (40%) 3-hour examination (60%)

(g) Reading List

  1. Numerical Analysis by Richard L. Burden and J. Douglas Faires, Wardsworth, 1993.
  2. A.K. Kaw, E.E.Kalu and D.Nguyen(2008) Numerical Methods with Applications.
  3. Numerical Analysis by Timothy Sauer, 2nd Edition, 2011
  4. Applied Numerical Analysis using MATLAB, 2nd Edition by Laurene Fausett, May 2007
  5. Numerical Methods using MATLAB 4th Edition by Johm Mathews, Kurtis Fink

(a) Description

The course is provide students with a strong foundation in systematic approaches to design and implementation of database applications. Preliminarily operations like requirements gathering and database planning will be covered. The course will also introduce students to developing of application programs that talk to the database. These applications may be online or off line.

(b) Aims

The aims of the course unit are to:

  • Provide a background for the evolution of database (management) systems
  • Provide the students with the steps one has to go through when developing good database applications
  • Give hand on experience and knowledge in developing database (driven) applications

(c) Learning outcomes

By the end of the course, the student should be able to:

  • Describe the systematic approaches to design and implementation of database applications
  • Describe the concepts of requirements gathering and database planning
  • Discuss the development of application programs that talk to the database.

(d) Teaching and learning pattern

Teaching will be by lectures, take home reading assignments/class presentations and laboratory practicals

(e) Indicative content

  • Background to databases
  • Evolution of database systems
  • Database organization and architecture
  • Database models
  • The database development life cycle
  • Database design
  • Tuning of operational systems
  • Querying databases
  • SQL/PL SQL
  • Scripting

(f) Assessment method

Assessment will be in terms of tests and take home assignments (40%), a practical examination (30%) and a final written exam (30%)

(g) Reading List

  1. Thomas Connolly and Carolyn Begg: Database Systems: A Practical Approach to Design, Implementation and Management. 2nd Edition, Addison-Wesley, 2004.

(a) Description

The course gives the students a strong mathematical base to be able to tackle other computer problems. The course provides techniques that commonly used in the general area of computer science. It builds a foundation for other courses that need special mathematical backgrounds.

(b) Aims

The aims of the course are:

  • To provide students with a mathematical base that is to be used to solve computer science problems
  • To improve the problem solving skills of students

(c) Learning outcomes

By the end of the course, the student should be able to:

  • Describe functions like composite, logarithmic, exponential and hyperbolic
  • Apply techniques and theorems of evaluating Limits
  • Explain the rules and theorems of determining derivatives
  • Describe the fundamental theorem of Calculus

(d) Teaching and learning pattern

The teaching will largely involve lectures, together with tutorials and take home assignments.

(e) Indicative content

  • Functions

    • Polynomials (linear, quadratic) rational, composite functions
    • Transcendental functions: logarithmic and exponential functions
    • The trigonometrically functions and their inverses
    • The hyperbolic functions and their inverses
  • Limits
    • Informal definition of limits of functions and continuity;
    • One sided limits
    • Removable discontinuity
    • Techniques and theorems of evaluating limits
    • Formal definition of limits
    • Application to definition and properties of continuous functions
    • Use of the definition in proofs and problem of limits and continuity
  • Differentiation
    • Definition of a derivative, continuity and differentiability
    • Rules and theorems of determining derivatives
    • Inverse functions: their derivatives and graphs
    • Differentials: applications to approximation. Rolle’s theorem, Mean Value Theorem, L’Ohopital’s Rule
    • Anti-derivatives: Techniques and theorems for determining anti derivatives
    • Integration: Define Intergral, Rieman sums, the definite intergral and area
    • The fundamental theorem of calculus: application to evaluation of definite intergrals (by substitution)
    • Functions defined by integration: f(t) dt as an anti -derivative of f(x), mean value theorem for intergrals

(f) Assessment method

The assessment will be by tests (20%), group assignments and presentations (20%) and final examination (60%)

(g) Reading List

  1. Calculus and Analytic Geometry (9th Edition) by George B. Thomas, Ross L. Finney Addison Wesley, 1995
  2. Introduction to Statistics by R. E Walpole, 3rd Ed, Prentice Hall, 1982
  3. Calculus by Hughes-Hallett, Gleason, McCallum Wiley
  4. Calculus in Context by James Callahan, et al, 2008
  5. Reform Calculus by Marcel B. Finan, Arkansas Tech University, 2004

(a) Description

This course introduces established and evolving methodologies for the analysis and design of an information system. Great emphasis is placed on system characteristics, managing projects, prototyping, CASE/OOM tools, systems development life cycle phases, the role of the systems analyst, systems selection, definition of systems requirements, feasibility analysis, system design, and system architecture are topics included.

(b) Aims

To introduce software engineering and to explain its importance

  • To set out the answers to key questions about software engineering
  • To introduce ethical and professional issues and to explain why they are of concern to software engineers

(c) Learning outcomes

By the end of the course, the student should be able to:

  • Describe the established and evolving methodologies for the analysis and design of an information system
  • Describe the systems development life cycle phases
  • Describe the role of the systems analyst, and systems selection
  • Analyze a problem and design an appropriate solution using a combination of tools and techniques.

(d) Teaching and learning pattern

Teaching and learning is to be implemented through lecture, lab and tutorial sessions. Students are also expected to make presentations of their work.

(e) Indicative content

  • SAD Fundamentals: Introduction to IS & types of IS; Need for SAD & role of Analyst; SDLC & use of CASE tools; Determining feasibility & mgt of SAD activities.
  • Information Requirements Analysis Information gathering (Interactive methods, unobtrusive methods, RAD, prototyping); Determining Systems requirements (types of requirements)
  • The Analysis Process: Structuring systems requirements (describing process specifications & structured decisions) Data modelling; Process modelling; Preparing System proposals.
  • The Design Process: Designing effective output; Designing effective input (Accurate Data entry Procedures); User Interface design; Database Design.
  • System Implementation: Quality Assurance through Software Engineering (design with structured charts, testing,maintenance, auditing, Quality mgt); Implementing Information Systems (user training, conversion strategies, systems evaluation.
  • Project Management: Stages of system Development; Project planning; Estimation & Project Monitoring & Control.
  • Introduction to Object-oriented Systems Analysis & Design using UML

(f) Assessment method

The assessment will be by tests (20%), group assignments and presentations (20%) and final examination (60%)

(g) Reading List

  1. Kendall & Kendall, Systems Analysis and Design, 6th edition, Pearson Prentice Hall, 2005.
  2. A. J. Hoffer, F. J. George and J. S. Valacich, Modern Systems Analysis and Design, 2nd edition, Addison-Wesley, 1999.

Recess Term

The course aims at imparting practical skills in areas chosen by the faculty. The students are to be supervised by staff with in the faculty. Areas of practical skills development include;

  • Implementation of projects
  • Network and system administration
  • Hardware maintenance
  • Computer assembly

This can be done within the School of Computing and Informatics Technology or any other unit in Makerere University. Students will write a report at the end of the course.

In this course, students will cover the course content of the CCNA international

Year 2

Semester 1

(a) Description

The course gives students a firm foundation of data structures and algorithms. The course trains students on systematic development and analysis of algorithms. The importance of algorithm complexity on computer performance is emphasized. Typical computational problems and their solutions/analysis are to be covered.

(b) Aims

The aims of the course are to:

  • Make students appreciate the role of data structures and algorithms in computer programs;
  • Improve students’ problem solving skills by subjecting them to step by step analysis and design of computer algorithms;
  • Introduce students to concepts Data structures;
  • To expose students to generic algorithmic problems and apply them to other computational scenarios.
  • Introduce students to concepts of algorithm analysis;

(c) Learning outcomes

By the end of the course, the student should be able to:

  • Appreciate the role of data structures and algorithms in computer programs
  • Describe a step by step analysis and design of computer algorithms
  • Analyze generic algorithmic problems and apply them to computational scenarios

(d) Teaching and learning pattern

The teaching pattern is by lecture, practical lab work, group discussion and class presentations.

(e) Indicative content

  • Complexity analysis (Big-O notation, orders of growth, worst case, average case and amortized analysis);
  • NP-complete problems;
  • Greedy algorithms;
  • Dynamic programming;
  • Design patterns for data structures;
  • Graphical representation of optimization problems
  • Divide-and-conquer algorithms;
  • Elementary data structures;
  • Recursive data structures (stacks, queues, linked lists, trees);
  • Storing and searching (hash tables, search trees);
  • Graph algorithms on graphs (shortest path, spanning trees).

(f) Assessment method

The assessment will be done by tests/assignment (40%) and final examination (60%)

(g) Reading List

  1. Data Structures and Algorithms by Alfred V. Aho, Jeffrey D. Ullman, John E. Hopcroft. Addison-Wesley, 1983
  2. The Design and Analysis of Computer Algorithms by Alfred V. Aho, Addison-Wesley Longman, 1974
  3. Introduction to Algorithms 2nd Ed by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, McGraw-Hill, 2008.
  4. Problem Solving with Algorithms and Data Structures Using Python, by Brad Miller, David Ranum, 2011
  5. Data Structures and Algorithm Analysis in Java, by Clifford A. Shaffer - Dover Publications , 2012

(a) Description

This course examines principles, design, implementation, and performance of computer networks and data communication. The aim is to sharpen student’s understanding and skills in computer networking and data communication. Subjects for discussion include: Internet protocols and routing, local area networks, wide area networking, wireless communications and networking, performance analysis, congestion control, TCP, network address translation, multimedia over IP, switching and routing, mobile IP, peer-to-peer networking, network security, and other current research topics and technologies.

(b) Aims

The aims of the course unit are to:

  • To provide a solid basis on the theoretical and practical understand of data communication networks
  • To introduce students to standards and guidelines in computer and data communication networks
  • To impact knowledge and skill relevant for the design, implementation and maintenance of modern computer communication networks
  • To introduce students to emerging technologies in data communication

(c) Learning outcomes

Upon successful completion of this course, the student should be able to:

  • Describe theoretical concepts of computer communication systems, including standards, protocols, and infrastructure devices e.g. routers and switches.
  • Design, install and manage a simple Local Area Network or A campus Wide Area Network
  • Describe emerging communication technologies particularly wireless and fiber optic technologies
  • Deploy sound network security practices and tools
  • Describe emerging research directions in computer communication networks
  • To write a few network scripts

(d) Teaching and learning pattern

The course will be delivered inform of lectures, tutorials, lab experimentation, and group assignments.

(e) Indicative content

  • Network services and applications: DNS, HTTP, SMTP, peer-to-peer systems
  • Network transport architectures, TCP, UDP, TCP congestion control
  • Routing and forwarding, intra-domain, inter-domain routing algorithms and Mobile IP
  • Link layers and local area networks, Ethernet, WiFi, and mobility
  • Multimedia communications and quality of service
  • Network measurement, inference, and management
  • Network security (ACL, IPSec, etc)
  • Network programming
  • Network experimentation and performance analysis
  • Protocol verification

(f) Assessment method

Assessment will be in terms of tests and Assignment (40%) and final examination (60%)

(g) Reading List

  1. James F. Kurose and Keith W. Ross. Computer Networking - A Top Down Approach Featuring the Internet, 3rd edition, Addison-Wesley, 2004, ISBN 0-321-22735-2.
  2. L. Peterson and B. Davie, Computer Networks: A Systems Approach. Morgan Kaufmann Publishers, 1999.

(a) Description

The course provides students with skills of solving generic formal problems in science. It covers the intellectual and practical skills necessary for problem formalization.

(b) Aims

The aims of the course are:

  • To provide students with factual knowledge including the mathematical notations and terminologies used in formalizing scientific problems
  • To provide students with fundamental principles including the laws and theorems arising from the concepts covered in this course;
  • To be able to apply course material along with techniques and procedures to solve practical problems;
  • To provide programming skills by writing numerical programs like Matlab programs, to solve numerical problems.

(c) Learning outcomes

By the end of the course, the student should be able to:

  • Describe the mathematical notations and terminologies used in formalizing scientific problems
  • Discuss the fundamental principles including the laws and theorems arising from the concepts covered
  • Apply numerical programs like Matlab programs, to solve numerical problems.

(d) Teaching and learning pattern

Teaching will be by Lectures and practical demonstrations.

(e) Indicative content

  • Predicate Logic Specification:Foundations; Basic concepts; Verification; Z; Tools and systems; Z animation Miranda and ZANS; Nitpick and the Z Notation.
  • Algebraic Specification:Foundations; Basic concepts; Verification; Tools and systems; Miranda; The OBJ family of languages; LARCH.

(f) Assessment method

Assessment will be in terms of tests and practical assignments (40%) and final written examination (60%)

(g) Reading List

  1. Z: An Introduction to Formal Methods, by Antoni Diller, 2nd edition, Wiley, (June 1994), ISBN-10: 0471939730
  2. Logic in Computer Science: Modeling and Reasoning about Systems, by Michael Huth and Mark Ryan, Cambridge University Press; 2nd Edition (August, 2004), ISBN-10: 052154310X
  3. Formal Methods and Models for System Design: A System Level Perspective, by Gupta, R., Le Guernic, P. Shukla, S.K. and Talpin, J.P. (Eds.), 2004, ISBN: 978-1-4020-8051-7

(a) Description

This course introduces students to the foundations of software engineering as a discipline. Students are introduced to the evolving role of software engineering, especially with emphasis on software engineering process and process models. Key topics covered include Software configuration management, Requirement analysis, Software Specification, Design methods, Software testing, Software project management techniques; Software project planning, Risk management; Software Quality Assurance; Software reuse; and Computer aided software engineering: CASE tools and application.

(b) Aims

Aims and Objectives:

  • To introduce software engineering and to explain its importance
  • To set out the answers to key questions about software engineering
  • To introduce ethical and professional issues and to explain why they are of concern to software engineers;

(c) Learning outcomes

On successfully completing of this unit students will be able to:

  • Demonstrate competence in handling software engineering projects.
  • Know the fundamental software engineering processes and models.
  • Know what is involved in a typical software engineering project’s life cycle.
  • Employ good project management principles in handling projects and know why these principles are important in constructing quality software.
  • Be competent in using CASE tools in real world projects.

(d) Teaching and learning pattern

Teaching and learning is to be implemented through lecture, lab and tutorial sessions. Students are also expected to make presentations of their work.

(e) Indicative content

  • Evolving role of software, software characteristics; Systems and environment; system engineering hierarchy, information and knowledge engineering; Information strategy; Business Area analysis, modeling enterprise and business-level data modeling, system architecture and associated information flow; writing system specification.
  • Software Engineering as a layered technology: Software process, software process models. Software configuration management: the SCM process, Identification of objects in software configuration, version control, change control, configuration audit, SCM standards.
  • Software Engineering as a layered technology: Software process, software process models. Software configuration management: the SCM process, Identification of objects in software configuration, version control, change control, configuration audit, SCM standards.
  • Requirement analysis: Communication techniques, Information gathering tools; organizing and structuring information; analysis principles; Analysis modeling.
  • Software Specification: Design process, principles and concepts: Abstraction, refinement, modularity, control hierarchy, structural partitioning, information hiding, functional independence, cohesion, coupling, design heuristics;
  • Design methods: data design, architectural design, transform mapping, design optimization, human computer interface design, procedural design and tools; Design documentation.
  • Software testing: Testing objectives, Testing principles, Testability, test case designing, white box testing; Basis path testing: Condition testing, data flow testing, loop testing; Black box testing: graph based testing methods, equivalence partitioning, Boundary value analysis, comparison testing; Testing documentation and help facilities; Software testing strategy: unit testing, integration testing, validation testing, system testing.
  • Software project management techniques: project metrics, software measurement and metrics, software quality metrics;
  • Software project planning: objectives of planning, resources, project estimation and estimation models, project decomposition techniques, make-buy decisions; automated estimation tools.
  • Risk management: software risks, risk identification, risk projection, risk mitigation, monitoring and management; Project Scheduling: people and effort relationships, defining tasks, defining task network, scheduling techniques; Software teams and intrateam relationships; role of project manager.
  • Software Quality Assurance: Concept of quality, quality control vs. quality assurance, cost of quality, factors that affect quality, quantitative view of quality, quality metrics, defect removal efficiency SQA activities, ISO standards and CMM practices, SEI levels, Software reviews, Formal approaches to SQA, Statistical Quality Assurance. Software reliability, reliability metrics, reliability models, meeting reliability requirements.
  • Effective metrics for software process: Measurement principles, attributes of software metrics, metrics for analysis model, metrics for design model, metrics for source code, metrics for maintenance.
  • Software reuse: difficulties in reuse, hardware reuse vs. software reuse, reusable artifacts, domain engineering approach, analysis design and construction of reusable components, classification and retrieval of components, economic impact of reuse and reuse metrics.
  • Computer aided software engineering: CASE tools and application.

(f) Assessment method

  • Continuous assessment through practical exercises and Coursework, together with two scheduled tests (40%)
  • Final exam at the end of the Semester and accounts for 60% of the final grade.
  • (g) Reading List

    1. J.F. Peters, W.Pedrycz,Software engineering: An Engineering approach, John Wiley, 2000.
    2. R.S. Pressman, Software engineering: A Practitioners Approach, 5th Edition, McGraw Hill, 2005.
    3. Sommerville, Software engineering, 8th Edition, Addison Wesley, 2008
    4. D. Ghezzi, M. Jazayeri, D. Mandrioli, Fundamentals of software Engineering, Prentice Hall of India, 2004.

    (a) Description

    The course applies mathematics to finite or discontinuous quantities in order to master the process of problem- solving, communication, reasoning, and modeling. It gives a basic understanding of mathematical structures that are fundamentally discrete. Objects studied in discrete mathematics are largely countable sets such as integers, finite graphs, and formal languages. Applications of such concepts to computer science are to be studied. Concepts and notations from discrete mathematics are useful in studying and describing objects and problems in computer algorithms and programming languages.

    (b) Aims

    The aim of this course is to provide the student with: -:

    • A basic understanding of mathematical objects that assume only distinct, separate values, rather than values on a continuum.
    • The main ideas studied in the broad area of Discrete Mathematics especially clear algorithmic aspects.
    • An understanding of what the relation between problems is.

    (c) Learning outcomes

    By the end of the course unit, the student should be able to:

    • Describe the process of problem solving, communication, reasoning and modeling;
    • Discuss the applications of the concepts of integers, finite graphs and formal languages;
    • Describe objects and problems in computer algorithms and programming languages.

    (d) Teaching and learning pattern

    Teaching and learning will be by lectures and tutorials

    (e) Indicative content

    • Logics and set theory
    • Number theory
    • Relations and functions
    • Languages
    • Finite state machines (and optionally Finite state automata)
    • Groups and Modulo Arithmetic
    • Number of solutions of a linear equation
    • Recurrence relations
    • Searching algorithms

    (f) Assessment method

    Assessment will be by assignments and/or tests (40%) and written examination (60%)

    (g) Reading List

    1. Bobrow, L.S. and Arbib, M.A. Discrete Mathematics: Applied Algebra for Computer and Information Science. Philadelphia, PA: Saunders, 1974.
    2. Dossey, J.A.; Otto, AD.; Spence, L.; and Eynden, C.V. Discrete Mathematics, 3rd ed. Reading, MA: Addison-Wesley, 1997.
    3. Balakrishnan, V.K. Introductory Discrete Mathematics. New York: Dover, 1997.
    4. Kenneth H. Rosen; Discrete Mathematics and its Applications
    5. Johnsonbaugh; Discrete Mathematics 6th Edition

    (a) Description

    This course examines the concepts, techniques, applications, and theories of Artificial Intelligence. The focus of the course is on the theory and application of artificial intelligence. Topics include logic, search, and reasoning with an emphasis on fundamentals and recent advances in AI. Given the broad range of topics addressed by the AI field, topics for discussion must, necessarily, be limited. Therefore, this course will focus on issues of search, knowledge representation, reasoning, decision making, and learning from the perspective of an intelligent agent.

    (b) Aims and Objectives

    • To give students an advanced understanding of, and competence with, the theories, concepts, technologies and techniques of Computer Games development.
    • To produce graduates possessing awareness, knowledge and practical skills in the field of Computer Games enabling them to follow a program of study that will offer relevant specialization and career options.
    • To develop students professional attitudes, interpersonal and entrepreneurial skills which are required by a practitioner in the industry.
    • To provide students with critical and evaluative perspectives related to Computer Games development and develop student’s capacity for independent and self-reflective learning, ensuring their future contribution to research and development.

    (c) Learning outcomes

    At the end of this course, the student will be able to:

    • Formulate and assess problems in artificial intelligence.
    • Assess the strengths and weaknesses of several methods for representing knowledge.
    • Assess the strengths and weaknesses of several AI algorithms in areas such as heuristic search, game search, logical inference, statistical inference, decision theory, planning, machine learning, neural networks, and natural language processing.
    • Implement software solutions to a wide-variety of problems generally considered to require artificial intelligence.

    (d) Intellectual, Practical and Transferable skills

    This course describes and discusses several algorithms and techniques within the fields of artificial intelligence and machine learning. These are algorithms and techniques that have practical applicability in computer science fields. Theoretical and practical understanding of these areas equips the student with the insights and tools required for solving complex and difficult problems, and for implementing them in software.

    (e) Teaching and learning pattern

    Teaching and learning is implemented through lecture, lab and tutorial sessions. Students are expected to make presentations of their assignments for discussion in class.

    (f) Indicative content

    • Introduction to Artificial Intelligence: Simulation of Intelligence behavior, in different areas;
    • Problem solving: games, natural language question answering, visual perception, learning; Aim-oriented (heuristic) algorithms versus solution-guaranteed algorithms.
    • Understanding Natural Languages: Parsing techniques, context-free and transformational grammars, transition nets, augmented transition nets, grammar-free analyzers, sentence generation.
    • Knowledge Representation: First-order predicate calculus; PROLOG and LISP languages; Semantic nets; partitioned nets; Production rules; knowledge base, the inference system, forward and backward deduction.
    • Expert System: Existing systems (DENDRAL, MYCIN), Domain exploration; Meta-knowledge, expertise transfer, selfexplaining systems.
    • Pattern Recognition Structured Descriptions: Symbolic description, machine perception, line finding, interpretation, semantics and models, object identification and speech recognition.

    (g) Assessment method

    Assessment will be by continuous assessment through practical exercises and Coursework (40%) and final exam (60%)

    (h) Reading List

    1. R. Duda, P.Hart, Pattern Classification and Scene Analysis, Wiley, 1973.
    2. E.A. Feigenbaum, J.Feldman; Computers and Thoughts, AAAI Press, 1995.
    3. N.J. Jilsson, Problem Solving Methods in Artificial Intelligence, McGraw- Hill, 1971.
    4. J.Lloyd, Foundation of Logic Programming, Springer-Verlag, 1993.
    5. Artificial Intelligence: A modern approach 3rd Edition by Stuart Russell and Peter Norvig, 2009

    Semester 2

    (a) Description

    Operating Systems course introduces students to software that controls hardware and makes the hardware usable. Its interaction with other computer devises and how it controls other computer processes is explored.

    (b) The aims of the course are:

    • To provide students with a detailed understanding of how operating systems work.
    • To provide students with skills to write basic programs to utilize underlying operating system infrastructures.

    (c) Learning outcomes

    At the end of this course, the student will be able to:

    • Describe the dominant categories of operating systems
    • Describe the difference between the dominant operating systems
    • Describe the different design principles for operating systems and various software tools that make operating systems usable.

    (d) Teaching and Learning Pattern

    The teaching pattern is by lectures, lab sessions and group projects.

    (e) Indicative content

    • Operating Systems Structures
    • Processes and threads
    • Thread creation, manipulation and synchronization
    • Deadlock
    • Implementing Synchronization operations
    • CPU scheduling
    • Memory management
    • File systems and file system implementation
    • Monitors
    • Segments
    • Disk scheduling
    • Networking
    • UDP and TCP

    (g) Assessment method

    The assessment will constitute Practical assignments on at least 5 chapters of the course and written course work (40%) and written Exam (60%)

  • (h) Reading List

    1. Operating Systems: Internals and Design Principles 5th Ed by William Stallings, Prentice Hall, 2005.
    2. Operating System Concepts by Abraham Silerschatz, Peter Baer Galvin; Addison-Wesley
    3. Modern Operating Systems 3rd Edition by Andrew S. Tanenbaum
    4. Lecture notes on Operating Systems by Marvin Solomon, University of Wisconsin Madison 2007
    5. Operating Systems and Middleware: Supporting controlled Interaction by Max Hailperin , 2011
  • (a) Description

    This course introduces a paradigm where computation arises from proof search in a logic according to a fixed, predictable strategy. It thereby unifies logical specification and implementation in a way that is quite different from functional or imperative programming. This course provides a thorough, modern introduction to logic programming. It introduces the basic concepts and techniques of logic programming followed by successive refinement towards more efficient implementations or extensions to richer logical concepts. It covers a variety of logics and operational interpretations.

    (b) aim:

    • The aim of the course is to provide a basic introduction to the logic programming language, Prolog. It aims at introducing a number of logical systems of importance in computer science.

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Be conversant with the syntax and semantics of propositional and predicate logic
    • Be familiar with a variety of applications of predicate logic in software verification, databases and knowledge-based systems
    • Be able to write specifications in predicate logic expressing state constraints
    • Understand the notion of formal proof, and be able to construct simple proofs in a natural deduction proof system for predicate logic
    • Be aware that there are inherent expressiveness and computational limitations to the applicability of logical systems, and be familiar with a number of restrictions under which the computational limitations can be overcome
    • Be able to write programs in a logic programming language,
    • Understand both the top-down and the bottom up operational semantics of logic programs
    • Be familiar with a logic for reasoning about sequential programs, and capable of constructing correctness proofs for simple programs

    (d) Teaching and Learning Pattern

    The course consists of a traditional lecture component and a project component. The lecture component introduces the basic concepts and techniques of logic programming. The project component will be one or several projects related to logic programming.

    (e) Indicative content

    • Introduction
    • Pure logic (relational) Programming
    • The Prolog Language
    • Programming in Prolog
    • Efficient Prolog Programming
    • Combining Logic Programming, Functional Programming, Higher Order, Objects
    • Review of first order predicate logic and resolution
    • Fundamental results
    • Semantics of logic programs
    • Implementation of logic languages and advanced compilation
    • Parallelism, concurrency
    • Other LP/CLP languages

    (f) Assessment method

    Assessment will be by assignments and/or tests (40%) and written examination (60%)

    (g) Reading List

    1. Logic in Computer Science, Modeling and Reasoning about Systems, M.R. Huth and M.D. Ryan, Cambridge University Press 2000.
    2. SWI Prolog Home Page, http://www.swi-prolog.org/
    3. Logic Programming with Prolog by Max Bramer, 2005
    4. A grammatical view of Logic programming by Pierre Deransart and Jan Maluszynski
    5. Logic Programming: Proceedings of the 1999 International Conference on Logic programming

    (a) Description

    Systems programming is aimed at teaching students how to write programs using system level services. The system of instruction is UNIX due to availability of free system tools that have been largely developed by and for the academia

    (b) aim:

    • Skills in tools are provided by systems, their commands, system calls and understanding for model of computation.

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Design programs using system level services
    • Describe the Standard I/O UNIX Library
    • Describe the Files and Directories
    • Describe interprocess communication

    (d) Teaching and Learning Pattern

    The teaching pattern is by lectures, lab sessions and projects.

    (e) Indicative content

    • Introduction and Unix Standardization
    • File input and output
    • Standard I/O Library
    • Files and Directories
    • System Data Files and Information
    • Process Environment
    • Process Control
    • Process Relationships
    • Signals
    • Threads
    • Advanced I/O
    • Interprocess Communication

    (g) Assessment method

    Assessment will be in form of tests and practical assignment (40%) and final written examination (60%)

    (h) Reading List

    1. Advanced programming in the Unix Environment, by W. Richard Stevens, Addison-Wesley 2008
    2. Systems Programming and Operating Systems by Dhamdhere ; McGraw Hill, 1999 ISBN 0074635794, 9780074635797
    3. The Linux Programming Interface by Michael Kerrisk ; ISBN-10: 1593272200 , 2010
    4. Advanced Programming in the UNIX Environment, 2nd Edition by Stephen A. Rago, Addison-Wesley

    (a) Description

    The course introduces students to the concept of automata and complexity. It sets a background for more advanced studies like compiler construction and principles of programming languages.

    (b) aim:

    The aims of the course are:

    • To introduce students to the concepts of complexity, automata and computability
    • To prepare students for advanced studies in compiler construction and principle of programming languages

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Discuss the concepts of complexity, automat and computability
    • Apply the knowledge in compiler construction
    • Explain finite state machines and regular languages
    • Describe normal forms of grammar

    (d) Teaching and Learning Pattern

    Teaching will be in form of class lectures and tutorials

    (e) Indicative content

    • Finite state machines and regular languages:
    • Deterministic and non - deterministic machines
    • Equivalence and minimization;
    • Regular expressions and regular grammars;
    • Kleene’s theorem.
    • Push-down automata and context free grammar.
    • Normal forms of grammars; Top-down and bottom-up parsing.
    • Turing machines and computability;
    • Church’s thesis;
    • NP-Computable problems.

    (g) Assessment method

    Assessment will be in terms of Assignments and tests (40%) and final written examination (60%)

    (h) Reading List

    1. John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman: Introduction to Automata Theory, Languages, and Computation; Addison Wesley, 2000
    2. Ding-Zhu Du and Ker-I Ko: Theory of Computational Complexity. New York; Wiley, 2000
    3. Introduction to Computer Theory 2/E Daniel I. A. Cohen John Wiley & Sons, Inc 1997.
    4. Brookshear, J. G. Theory of Computation: Formal Languages, Automata, and Complexity. Redwood City, CA: Benjamin/Cummings, 1989.
    5. Introduction To Automata Theory, Languages and Computation by Hopcroft, Motwani, and Ullman

    (a) Description

    The purpose of this course is to acquaint students with types of scientific research relevant for anyone working in the field of computer science. It will enable students to develop capacity to conduct small, simple research projects while at the university.

    (b) aims:

    The aims of this course unit are to:

    • Enable students become competent in understanding the research process;
    • Provide skills that will enable students undertake independent research using a variety of appropriate methods, using primary and secondary data, as well as qualitative and quantitative techniques;
    • Provide students with skills to produce a research proposal;
    • Highlight ethical research practices to students.

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Capable in their chosen professional, vocational or study areas to conduct research;
    • Able to contribute in an entrepreneurial and innovative way within their business, workplace or community in the field of research;
    • Able to operate effectively and ethically in conducting research in groups/teams
    • Adaptable and manage change to handle different research situations according to different contexts;
    • Aware of research and research methodology in subsequent years of study

    (d) Intellectual, Practical and Transferable skills

    At the end of the course, students should have the ability to demonstrate:

    • Appreciation of the different functions and applications of scientific research in the field of computer science;
    • Basic knowledge of the different research methodologies relevant for computer science;
    • Knowledge of which methods to use in what circumstances;
    • Knowledge of what a research proposal entails;
    • Application of quantitative and qualitative research methods and techniques;
    • Judgment of the quality of research proposals as well as the products (articles, papers, theses etc.) of scientific research

    (e) Teaching and Learning Pattern

    Teaching will be in form of formal lectures, tutorials and seminars. Classes will be interactive and students are expected to come to class prepared to participate and contribute regularly to class activities and discussions.

    (f) Indicative content

    he content of this course will include:

    • Introduction to scientific research;
    • Formulating and clarifying the research topic and research problem;
    • Conducting a literature review;
    • Different research approaches;
    • Ethics in research;
    • Sampling;
    • Use of secondary data;
    • Collection methods for primary data;
    • Analyzing qualitative data;
    • Analyzing quantitative data and writing a research proposal and project report.

    (g) Assessment method

    The course will be assessed by course work and tests (40%) and final examination (60%)

    (h) Reading List

    1. Cooper, H. (1998). Synthesizing Research: A Guide for Literature Reviews. Thousand Oaks, California: Sage Publications.
    2. Saunders, M, Lewis, P & Thornhill, A (2003), Research Methods for Students, 3rd edn, UK, Financial Times, Prentice Hall.
    3. Introduction To Automata Theory, Languages and Computation by Hopcroft, Motwani, and Ullman

    Recess Term

    (a) Description

    During Industrial training, students are to go and work in an organization with an IT department. The student is to be under the supervision of one of the workers in the organization. The student is assigned duties in line with the operations of the organization. Staff from Makerere University will make visits to get the students’ view of the organization as well as the organization’s view about the student. The supervisor will be given a form to evaluate the students and the student will make a report about his experience. The two reports will be used to evaluate the student.

    Year 3

    Semester 1

    (a) Description

    The course introduces the principles of user interface development, focusing on design, implementation and evaluation.

    (b) aims:

    The course aims at providing the skills listed below to students:

    • Developing efficient, flexible and interactive User Interfaces(UI)
    • Provide ability to identifying system users, the tasks they want to carry out and the environment in which they will be working;
    • Creating conceptual designs;
    • Designing various kinds of UI, in particular graphical user interfaces (GUIs) , computer and mobile and web sites;
    • Evaluating UIs
    • Appreciation of realities of developing usable UIs in an organization.

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Design efficient, flexible and interactive user Interfaces
    • Demonstrate ability identifying systems users and the tasks they want to carry out
    • Evaluate user interfaces
    • Appreciate realities of developing usable UIs in an organization

    (d) Teaching and Learning Pattern

    The teaching pattern is by lectures, lab sessions and projects.

    (e) Indicative content

    The content of this course will include:

    • Usability
    • User-Centered Design
    • Design
    • Experiment Design
    • Computer Prototyping
    • Heuristic Evaluation
    • User Testing
    • Experiment Analysis UI Software Architecture
    • Human CapabilitieS
    • Output Models
    • Conceptual Models and Metaphors
    • Input Models
    • Design Principles
    • Paper Prototyping
    • Constraints and Layout
    • Graphic

    (f) Assessment method

    Assessment will be in form of assignments and tests (40%), practical Exam (30%) and final written exam (30%)

    (g) Reading List

    1. Norman, D. A. The Design of Everyday Things. New York, NY: Doubleday, 1990. ISBN: 0385267746.
    2. Nielsen, J. Usability Engineering. Burlington, MA: Academic Press, 1994. ISBN: 0125184069.
    3. Mullet, K., and D. Sano.Designing Visual Interfaces: Communication oriented techniques. Prentice Hall, 1994. ISBN: 0133033899.

    (a) Description

    The course introduces the students to the basic concepts in entrepreneurship, identification of business opportunities, business evaluation and analysis. It provides students with the skills needed to effectively identify, organize, develop, and manage own business ventures. This course is based on creativity and professional development foundations that should orient a student to take adventure, a personal journey, and a seize opportunity for business start-up. The course gives students an opportunity to make creative adjustments to meet personal needs and increase self-drive to achieving success.

    (b) A student that undertakes this course should be able to:

    • Understand the origins of entrepreneurship and an entrepreneur
    • Identify, evaluate, and select business opportunities
    • Perform a self-evaluation to match their own characteristics with that of an entrepreneur
    • Carry out feasibility and viability of an investment opportunity
    • Analyze and exploit the Entrepreneurial Environment provided by the political, socioeconomic and technological conditions.

    (c) Learning outcomes

    On completion of this course unit, the students will be able to:

    • Perform self-evaluation to match business opportunities
    • Analyze the entrepreneurial environment
    • Ensure start-up, survival, sustainability of an investment opportunity, identify their own personal entrepreneurial potential, ability, and competences
    • Identify, and exploit business opportunities and resources

    (d) Teaching and Learning Pattern

    The teaching and learning approaches will combine classroom lectures, discussions and group activities, quizzes and take home assignments. A group project shall form part of the coursework. The material presented in class will overlap that of the text but will contain additions and variations.

    (e) Indicative content

    • Entrepreneurship-Scope, theories;
    • Entrepreneurial Process; the Entrepreneur, Creativity and Innovation, feasibility study and analysis, business planning,
    • Creating and developing a business, Entrepreneurship, Entrepreneurship Development,
    • Role of government in entrepreneurship growth, development and entrepreneurship

    (g) Assessment method

    Assessment will be in terms of tests and practical exercises (40 %) and a final examination (60%)

    (h) Reading List

    1. Bruce R. Barringer & R. Duane Ireland (2006). Entrepreneurship: Successfully Launching New ventures. Published by Pearson-Prentice Hall. 1/e Edition. ISBN 0-13-061855-1
    2. Thomas W. Zimmerer and Norman M. Scarborough (2005) Essentials of Entrepreneurship and Small Business Management. 4th Ed. ISBN 0-13-191856-7

    (a) Description

    This course highlights programming practices that are vital in the day today work of a programming Professional. While many systems are described by functionalities, some important aspects like security, robustness, and maintainability are ignored. Students are to get an in depth understanding of these concepts as well as exploring the current trends in the programming environment.

    (b) Aim:

    The aim of the course is to concretize the student’s past programming experience as well as highlighting critical practices in programming that are necessary for a professional programr

    (c) Learning outcomes

    By the end of the course, the student should be:

    • Able to implement non- functional but critical aspects of programming like robustness and security
    • Able to develop well documented and well- structured software that can easily be maintained
    • Knowledgeable in other programming practices like mobile programming
    • Aware of newer programming paradigms like service oriented and cloud computing

    (d) Teaching and Learning Pattern

    Teaching will be by lectures and lab demonstrations.

    (e) Indicative content

    • Programming for Security:
    • Programming for Robustness
    • Programming for Maintainability
    • Trends in Programming Paradigms

    (g) Assessment method

    Assessment will be by tests and practical assignments (40%) and final written examination (60%)

    (h) Reading List

    1. Advanced Programming in the UNIX Environment by W. Richard Stevens and Stephen A. Rago Addison Wesley 1992
    2. Test-Driven Development: A Practical Guide, by David Astels
    3. Beautiful Code: Leading programrs Explain How They Think, by Andy Oram & Greg Wilson
    4. Refactoring: Improving the Design of Existing Code, by Martin Fowler
    5. Refactoring to Patterns, Joshua Kerievsky

    (a) Description

    The course introduces students to the low level organization and operation of programming languages. It covers semantic and syntactic as well as operational issues in programming languages. The building blocks of programming languages are explored.

    (b) Aims:

    The aims of the course are:

    • To give students fundamental knowledge in the organization and operation of programming languages
    • To make students appreciate the possible future evolutions of programming languages
    • To expose students to causes of operational (like performance, security, etc) characteristics of programming languages

    (c) Learning outcomes

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

    • Understand common language paradigms
    • Know the different building blocks of a programming language
    • Know how the different blocks of a programming language interact

    (d) Teaching and Learning Pattern

    Teaching will be largely by lectures, tutorials and class assignments

    (e) Indicative content

    • Overview over programming language paradigms
    • Common principles: syntax, syntax trees, formal semantics (denotational and operational), variables and binding
    • Types: role of types in programming and programming languages, types and their operations: products, sums, functions, recursive types, reference and array types
    • Primarily imperative issues: control flow, arrays, pointers and references, parameter-passing mechanisms, scoping
    • Type systems: strongly typed languages type checking (static vs. dynamic), type equivalence (by name vs. structural), overloading, coercion, polymorphism, type inference
    • Binding: declarations and environments. Block structure: scope and visibility, stack discipline. Bound occurrences: static vs. dynamic binding.
    • Encapsulation: information hiding, modules, abstract data types, classes
    • Language implementation: parsing, code generation, garbage collection.

    (f) Assessment method

    Assessment will be by Tests and Assignments (40%) and final written examination (60%)

    (g) Reading List

    1. Friedman,Wand, and Haynes, Essentials of Programming Languages, MIT Press, 2001 Manual (5th Edition) by Samuel P. Harbison; Prentice Hall, 2002.
    2. Principles of Programming Languages by Gilles Dowek , Springer 2009
    3. Principles of Programming Languages by Pradnya Kashikar, Nilesh M. Magar
    4. Principles of Programming Languages: Design, Evaluation, and Implementation by Bruce J. MacLennan
    5. Principles of Programming Languages version 0.7 by Mike Grant, Zachary Palmer and Scott Smith

    (a) Description

    The course gives students theoretical and practical skills in modeling and simulation of dynamic systems with a view of learning their behavior and the sensitivity of that behavior to certain parameters.

    (b) Aims:

    The aims of the course are:

    • Familiarize students with modeling and simulation techniques that are applicable under varying circumstances
    • Equip students with practical experiences of composing models and running simulations under varying circumstances
    • Equip students with skills of correctly representing simulation results

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Describe modeling and simulation techniques
    • Apply experience of composing models and running simulations under varying circumstances

    (d) Teaching and Learning Pattern

    Teaching and Learning will be in form of Lectures and laboratory demonstrations

    (e) Indicative content

    • Simulation of operational systems
    • Simulation as a decision making methodology.
    • Model development and validation,
    • Design of simulation experiments,
    • Generation of appropriate values of random variables,
    • Interactive procedures and interpretation of results

    (g) Assessment method

    Assessment will be in form of tests and assignments (40%) and final examination (60%)

    (h) Reading List

    1. Business Modeling and Simulation by Les Oakshott, 1997, Trans- Atlantic Publications
    2. System dynamics modeling a practical approach by R.G. Coyle, Chapman & Hall/CRC, 1996.

    (a) Description

    The course covers general purpose graphics systems and their use. It gives an in depth knowledge of computer graphics and graphical user interfaces.

    (b) Aims:

    The aims of the course are:

    • Introduce students to the concepts of graphical representation on computers
    • Teach students the design of good graphical user interfaces

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Describe the concepts of graphical representation on computers
    • Apply graphics systems and concepts to solving real life challenges
    • Design good graphical user interfaces

    (d) Teaching and Learning Pattern

    Teaching will be in terms of class lectures and tutorials

    (e) Indicative content

    • Graphics hardware,
    • Geometrical transformations,
    • Surface and volume visualization,
    • Design and implementation of graphical user interfaces.
    • Two dimensional imaging processes.
    • Computer graphics applications.
    • Display system organization
    • Display devices and modes;
    • Display file construction and its structure;
    • Graphic primitive - device initialization,
    • View porting and windowing;
    • Line drawing
    • Simple and symmetrical Digital Differential Analysis (DDA);
    • Arch and circle generating DDA Line; and polygon clipping algorithms;
    • Curve plotting;
    • Transformations- projections and perspective views;
    • Picture segmentation: Graphics standards - PHIGS and GKS.

    (f) Assessment method

    Assessment will be in terms of assignments and tests (40%) and final exam (60%)

    (g) Reading List

    1. Introduction to Computer Graphics by James D. Foley, Andries van Dam, Steven K. Feiner, John F. Hughes and Richard L. Phillips, Addison Wesley, 2003.
    2. Fundamentals of Computer Graphics by Peter Shirley. AK Peters, 2002.

    (a) Description

    The course is to allow students, individually or in groups, to integrate the knowledge acquired over the previous five semesters into solving a non - trivial problem through a computer application. Emphasis will be put on the systematic development methodology, the documentation of the development process. The expected output at this stage will be the concept paper for the third year project in the semester 6.

    (b) Aims:

    The aim of the course is to give students experience in

    • Individual and collaborative work
    • Proper procedures in development of computer systems
    • Proper documentation of the software development process

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Demonstrate skills acquired in the entire course
    • Apply the skills and knowledge acquired during the course of study to come up with an acceptable proposal

    (d) Teaching and Learning Pattern

    Students will be under the supervision of a member of staff (at least at a rank of Assistant Lecturer). The supervisor will guide them in the day today progress of the project. When the supervisor feels the students have addressed the problem at hand, (s)he will sign off their concept paper and recommend them to continue with the implementation.

    (e) Indicative content

    • The content is to be determined by the students under the guidance of the supervisor.

    (f) Assessment method

    Students will submit the signed Proposal to the department. The department will appoint a supervisor who will work with the students as they come up with their Proposal. Students will be required to present their work and answer any questions from the supervisor.

    (a) Description

    The course is to introduce students to the broad concepts of Linear Programming. Students will learn how to interprete and analyze LP problems, formulate them as problems and use existing techniques to solve them.

    (b) Aims:

    The aim of the course is to improve students’ problem solving skills by subjecting them to real life problems and guide them through formulation of their solutions. The choice of the cases chosen depends on their applicability in real life computing environment.

    (c) Learning outcomes

    By the end of the course, the student should be able to:

    • Correctly formalize real life problems into OR problems
    • Adequately solve typical OR problems
    • Make post optimality analysis on OR solutions

    (d) Teaching and Learning Pattern

    Teaching will be in form of lectures and Tutorialsh the implementation.

    (e) Indicative content

    • General LP Problem
    • Algebra and geometry of LP problems
    • Geometric solutions to LP problems, basic and optimal solutions to an LP problem
    • The constraint set as a convex polytype
    • The connection between extreme points and the basic solutions
    • The simplex method
    • The big M method
    • The Dual simplex method
    • The mutual primal-dual simplex algorithm
    • Post optimality analysis

    (f) Assessment method

    Assessment will be by assignments and tests (40%) and final written exam (60%)

    (g) Reading List

    1. Linear Programming and Network Flows by Mokhtar S. Bazaraa, John J Jarvis and Hanif D Sherali, John Wiley, 2005
    2. Operations Research: Applications and Algorithms by Wayne L. Winston. Wadsworth Publishing Company, 1997.
    3. Vasek Chvatal, Linear Programming
    4. Dr. Saul I. Gass , Linear Programming: Methods and Applications 5th Edition
    5. Stephen Boyd and Lieven Vandenberghe, Convex Optimization, 2004

    Semester 2

    (a) Pre-requisites: Computer Networks

    (b) Course Description

    The course is to introduce students to the broad concepts of Linear Programming. Students will learn how to interprete and analyze LP problems, formulate them as problems and use existing techniques to solve them.This is a theoretical course that covers the fundamentals of data communication Formatting and transmission of digital information over various media

    (c) Aims:

    The aims of the course are:

    • To provide a solid basis on the theoretical and practical understand of data communication networks
    • To introduce students to standards and guidelines in computer and data communication networks
    • To impact knowledge and skill relevant for the design, implementation and maintenance of modern computer communication networks
    • To introduce students to emerging technologies in data communication

    (d) Learning outcomes

    Upon successful completion of this course, the student should be able to:

    • Describe theoretical concepts of computer communication systems, including standards, protocols, and infrastructure devices e.g. routers and switches.
    • Design, install and manage a simple Local Area Network or A campus Wide Area Network
    • Describe emerging communication technologies particularly wireless and fiber optic technologies
    • Describe emerging research directions in computer communication networks

    (e) Teaching and Learning Pattern

    This course will be delivered through class lectures, discussions. Simulations will also be used to explain abstract concepts.

    (e) Indicative content

    • Introduction to communication
    • Digital versus Analog transmission; Modems
    • Transmission media: magnetic media, twisted pair, coaxial, fiber-optics;
    • Data encoding: straight, Manchester, differential Manchester, satellite;,
    • Modulation and their standards, codes and pulse code modulation;
    • Integrated Services Digital Networks
    • (ISDN);
    • Network Access Protocols; Passive versus dynamic allocation;
    • LAN standards:802.3 (Ethernet),802.4 (token bus), 802.5 (token ring);
    • (f) Assessment method

      (Assignments, Tests, Group Research course work) 40% Final Examination 60%

    (g) Reading List

    1. Data Communications and Networking, Behrouz A. Forouzan: Fourth Edition

    (a) Description

    In this course unit, students shall understand the complete process of translating a program in a high-level language to machine language. The course gives an introduction to the design and implementation of a compiler with emphasis on principles and techniques for program analysis and translation. It also gives an overview of the tools for compiler construction. Lexical analysis, token selection, transition diagrams, and finite automata. The use of context-free grammars to describe syntax, derivations of parse trees, and construction of parsers. Syntax-directed translation schemes; Intermediate code; Symbol table; Code generation; Detection, reporting, recovery and correction of errors.

    (b) Aims:

    The aim of the course is to allow students to examine how a high-level language program is accepted as input and translated into assembly language or machine language so that the central processing unit receives instructions which it understands and can execute.

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Describe the complete process of translating a program in a high level language to machine language
    • Describe the design and implementation of a compiler
    • Describe the principles and techniques for program analysis and translation
    • Identify the tools for compiler construction

    (d) Teaching and Learning Pattern

    The course consists of a traditional theoretical component and a project component. The lecture component introduces the basic concepts of compiler writing. The project component will involve students in writing a compiler for a specified programming language.

    (e) Indicative content

    • Language translators: Introduction to compilers and interpreters.
    • The structure of a compiler: lexical analysis, parsing, semantic analysis.
    • Intermediate code generation, register allocation, global optimization.
    • Lexical scanning
    • Parsing
    • Automatic parser construction. FIRST and FOLLOW functions. LL(1) parsers. LR parsers. Conflicts in LR grammars and how to resolve them
    • Semantic analysis: Attributes and their computation, tree-traversals, visibility and name resolution. Inherited attributes and symbol tables. Name resolution in block-structured languages
    • Type checking: Type systems, varieties of strong typing, overload resolution, polymorphism and dynamic dispatching. Type-checking and type inference, unification
    • Run-time or Run-time organization: storage allocation, non-local references, parameter passing, dynamic storage allocation. Exception handling, debugging information
    • Intermediate code generation: control structures, expressions, simple register allocation. Aggregates and other highlevel constructs
    • Global optimization
    • (f) Assessment method

      Assessment will be by assignments and/or tests (40%) and written examination (60%)

    (g) Reading List

    1. Compiler construction by William McCastline Waite, Gerhard Goos Springer Verlag 1994
    2. Alfred V. Aho , Monica S. Lam and Jeffrey D.Ullman Compilers: Principles, Techniques, and Tools (2nd Edition) 2000
    3. Y.N. Srikant and Priti Shankar, The Compiler Design Handbook: Optimizations and Machine Code Generation, Second Edition, 2007
    4. Kenneth C. Louden, Compiler Construction: Principles and Practice 1997
    5. Steven Muchnick , Advanced Compiler Design and Implementation 1997

    (a) Description

    The course is to allow students, in groups, to integrate the knowledge acquired over the previous five semesters into solving a non - trivial problem through a computer application. Emphasis will be put on the systematic development methodology, the documentation of the development process, and how well the developed systems address the problem to be solved. Non - functional attributes like robustness, usability, security and reliability will also be tested.

    (b) Aims:

    The aim of the course is to give students experience in:

    • Group and collaborative work
    • Proper procedures in development of computer systems
    • Proper documentation of the software development process
    • Development of big not trivial computer projects.

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Demonstrate skills acquired in the entire course
    • Apply the skills and knowledge acquired during the course of study to come up with a working or running prototype or system

    (d) Teaching and Learning Pattern

    Students will be under the supervision of a member of staff (at least at a rank of Assistant lecturer). The supervisor will guide them in the day today progress of the project. When the supervisor feels the students have addressed the problem at hand, (s)he will sign off their report and recommend them for examination.

    (e) Indicative content

    • The content is to be determined by the students under the guidance of the supervisor.

    (f) Assessment method

    Students will submit the signed report for examination to the department. The department will appoint an examination panel of at least 5 people who will evaluate the report as well as testing the system. Students will be required to present their work and answer any questions from the panel. Each member of the panel will award a mark depending on his/her view on the worthiness of the developed application.

    (a) Description

    Computer security is a branch of technology concerned with digital security or information security applied to computers. Since the largest part of the computer that users interact with is software, computer security pays big attention to development of secure software.

    (b) Aims:

    The aims of the course are:

    • To introduce students to threats faced by computers in the connected digital world.
    • To introduce students to techniques that are used to protect computers against various threats.

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Discuss the threats faced by computers in the digital world
    • Describe the techniques that are used to protect computers against various threats
    • Describe digital security principles
    • Describe Access control lists

    (d) Teaching and Learning Pattern

    The teaching pattern is by lectures, lab sessions and group projects

    (e) Indicative content

    • Digital security principles
    • Hardware based security mechanisms
    • Secure operating systems
    • Security architecture
    • Security by design
    • Secure coding (Software Security)
    • Access Control Lists
    • Security Applications

    (f) Assessment method

    Assessment will constitute Practical assignments on at least 5 chapters of the course and written course work (20%) and written Exam (60%).

    (g) Reading List

    1. Ross J. Anderson: Security Engineering: A Guide to Building Dependable Distributed Systems, Willey 2001.
    2. Robert C. Seacord: Secure Coding in C and C++. Addison Wesley, 2005.
    3. Keith M. Jackson, Jan Hruska, Donn B. Parker, Computer Security Reference Book, 1992
    4. Bruce Schneier, Fast Software Encryption
    5. Katie Hafner, Cyber Punk

    (a) Description

    This course covers techniques and software tools that can assist management that deals with large amounts of data in management and business decision making. The course covers the fundamental differences between databases and data warehouses, the techniques of developing data warehouses as well as manipulating them to generate business strategic decisions.

    (b) Aims:

    The aims of the course are:

    • To give students the understanding on the role and operation of data warehouses
    • To equip students with skills of developing data warehouses
    • To equip students with skills of maintaining existing data warehouses
    • To equip students with skills of manipulating data warehouses to generate information for business decision making

    (c) Learning outcomes

    By the end of the course, the student should be able to:

    • Distinguish the roles of a database from that of a data warehouse
    • Develop a data warehouse
    • Populate and manipulate a data warehouse

    (d) Teaching and Learning Pattern

    Teaching will be in form of class lectures, tutorials, lab demonstrations as well as class presentations.

    (e) Indicative content

    • Data warehouse concepts: partitioning, granularity, record of source, and meta data.
    • Building viable decision support environments. .
    • Architect development,
    • Data migration and integration,
    • Use of operational data stores, and transactional systems.

    (f) Assessment method

    Assessment will be in form of tests and practical assignments (40%) and final written examination (60%)

    (g) Reading List

    1. Data warehousing fundamentals by Paulraj Ponniah Wiley 2001

    (a) Description

    This course gives students theoretical and practical skills on development of distributed systems and applications. This includes distributed-system specific challenges like reliability and robustness.

    (b) Aims:

    The aim of the course is to equip students with skills of developing distributed systems

    (c) Learning outcomes

    By the end of the course, the student should be able to:

    • Describe Event driven Architectures
    • Describe the development, documentation and testing of distributed applications
    • Describe the techniques of reusable, extensible and efficient software systems
    • Discuss maintainability and concurrence in distributed systems
    • Describe abstraction based on patterns and object-oriented techniques

    (d) Teaching will be by class lectures and laboratory demonstrations

    Teaching will be in form of class lectures, tutorials, lab demonstrations as well as class presentations.

    (e) Indicative content

    • Event-driven software architectures,
    • Distributed object computing,
    • Development, documentation and testing of distributed applications
    • Techniques for reusable, extensible and efficient software systems
    • Maintainability and concurrence in distributed systems
    • Abstraction based on patterns and object-oriented techniques

    (f) Assessment method

    Assessment will be in form of tests and (practical) assignments (40%) and final examination (60%)

    (g) Reading List

    1. S. Tanenbaum and M. V. Steen, Distributed Systems: Principles and Paradigms, Second Edition, Prentice Hall, 2006.
    2. R. Anderson, Security Engineering: A Guide to Building Dependable Distributed Systems, John Wiley & Sons, 2001.

    (a) Description

    The course is to expose provide students with an opportunity to search for knowledge in an area of interest. It is to allow a student do lightweight research and explore the current trends in a certain computer science area.

    (b) Aims:

    The aims of the course are:

    • To aid a student get an in depth understanding of the developments in one area of computer science
    • To improve the student’s research skills
    • To develop confidence in the students on the ability to search for knowledge with little guidance.

    (c) Learning outcomes

    By the end of the subject, students should be able to:

    • Discuss the various areas in computer science that are potential areas of research
    • Demonstrate skills acquired in research methods

    (d) Teaching and Learning pattern

    Students will be grouped in theme areas which will be covered by a set of staff. Staff will guide students on the specific themes/topics in the area as well as where to search for information. Staff will also address experiences and hardships found.

    (e) Indicative content

    • The content is not specific but will be dependent on the area the student chooses to pursue.
    • (f) Assessment method

      Students will present their findings in a report. The study report will be an outline and explanation of what the student has found out in the state of practice in the area of choice. The write up will be evaluated and the final mark awarded.

    (g) Reading List

    1. This will be decided by the lecturer in consultation with the Course leader