Courses-Level-2S

New Degree StructureOld Degree Structure

Course units effective from academic year 2017/2018 to date

CSC201S2: Database Systems Concepts and Design
Course Code: CSC201S2
Course Title: Database Systems Concepts and Design
Credit Value: 02
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
30 70
Objectives: Introduce database system concepts and fundamentals necessary for designing, implementing, and manipulating databases.
Intended Learning Outcomes:
  • State key characteristics of a database
  • Develop conceptual models for databases
  • Create efficient databases
  • Apply query language to create and manipulate databases
Contents:
  • Introduction to database concepts and architecture: File systems, database system concepts, three-schema architecture, classifications of database systems and database users
  • Data Modeling: Entity Relationship model, relational model, network model, hierarchical model, object relational model, UML class diagrams.
  • Relational database design: Relational model concepts, defining a relational schema from an ER diagram, basics of functional dependencies and normalization (1NF, 2NF, 3NF and BCNF)
  • Developing and manipulating databases: Data development and manipulation using SQL, MySQL, PostgreSQL and MongoDB
  • Relational algebra and relational calculus: Binary operations, Cartesian product, extended relational operator, tuple relational calculus and domain relational calculus
  • File organization for conventional DBMS: Storage devices and their characteristics, file organization, fixed-length records, variable-length records, sequential file organization, indexed sequential access method
  • Introduction to transaction management, concurrency control and recovery: Concept of transactions, concurrency in transaction processing, recovering databases from failure
Teaching/Learning Methods: Lectures, Recitation oral questions, Guided learning, Tutorial discussions
Assessment Strategy:
  • In-course Assessments —————————————30%
  • End-of-course Examination ———————————-70%
References:
  • Ramez Elmasri and Shamkant B. Navathe, Fundamentals of Database Systems, 7th Ed, Addison-Wesley, 2015.
  • J. Date, An Introduction to Database Systems, 8th Ed, Addison-Wesley, 2003
  • Ramakrishnan and Gehrke, Database Management Systems, 3rd Ed., McGraw-Hill, 2003.
CSC202S2: Computer Programming II
Course Code: CSC202S2
Course Title: Computer Programming II
Credit Value: 02
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
90 110
Objectives: Develop proficiency in writing programs to solve computational problems using suitable data structures.
Intended Learning Outcomes:
  • Implement appropriate data structures to manipulate data for various computational problems
  • Devise programs to solve complex computational problems
  • Create databases using database management systems
  • Develop web based applications that interact with databases
Contents:
  • Designing and Implementing algorithms: Recursion, backtracking, Divide-and-conquer, and Dynamic programming.
  • Fundamental data structures and their applications: Arrays, Lists, Stacks, Queues, Linked lists, Trees, and Graphs
  • Database design, modeling and development: SQL (MySQL, MariaDB) and NoSQL (MongoDB, PostgreSQL)
  • Develop web based applications: Web development using HTML, CSS and Scripting languages (PHP, JavaScript, JQuery, NodeJS)
Teaching/Learning Methods: Lectures, Laboratory practicals, Guided learning, Assignments, Continuous practical recordings
Assessment Strategy:
  • Assessment on practical records———————————–10%
  • End-of-First Semester Practical Assessment———————-30%
  • End-of-Second Semester Practical examination——————60%
References:
  • P. Deitel and H. Deitel, Java How To Program (Early Objects), 10th Ed, Prentice Hall, 2014.
  • R. Sedgewick and K. Wayne, Algorithms, 4th Ed., Addison Wesley Publishers, 2011.
  • N. Karumanchi, Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles, 5th Ed, 2016
  • D. Kalemis, The Fundamental Concepts of Object-Oriented Programming, 2013.
  • R. Elmasri and S. B. Navathe, Fundamentals of Database Systems, 7th Ed, Addison-Wesley, 2015.
  • D. Bartholomew, Getting Started with MariaDB, 2nd Ed, 2015.
CSC203S2: Operating Systems
Course Code: CSC203S2
Course Title: Operating Systems
Credit Value: 02
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
30 70
Objectives: Provide fundamental concepts and functionalities of operating systems.
Intended Learning Outcomes:
  • Describe the objective and functions of modern operating systems
  • Explain how resources (such as CPU, memory, storage, file and devices) are managed by the operating system
  • Demonstrate the operations of a prototypical process manager
  • Compare various techniques used for concurrency control
Contents:
  • Introduction to operating system: Architecture of modern operating systems (OS), evolution of OS, OS operations and functionalities, and open source OS
  • Processes and Threads: Concept of process, process states, process control block, schedulers, context switch, interprocess communication, process scheduling, overview of threads, multicore programming and multithreading models
  • Concurrency: Process synchronisation (race condition, critical-section problem, mutex locks, semaphores, classic problems of synchronization and monitors), deadlock (characterization, prevention, avoidance, detection and recovery)
  • Memory management: Swapping, memory allocation, fragmentation, paging, segmentation, virtual memory and address translation
  • Storage management: Mass Storage, host attached storage, network attached storage, storage area network and RAID
  • File and I/O Device management: File organization and access, file system security, device drivers, direct memory access and interrupt handling
Teaching/Learning Methods: Lectures, Case studies, Use of chalkboard, Simulation, Recitation oral questions, Guided learning, Tutorial discussions
Assessment Strategy:
  • In-course Assessments —————————————30%
  • End-of-course Examination ———————————-70%
References:
  • W. Stalling, Operating systems: Internals and Design Principles, 8th Ed, Pearson, 2014.
  • A. Silberschatz, P. B. Galvin, G. Gagne, Operating System Concepts, 9th Ed, 2013.
  • S. Tanenbaum and H. Bos, Modern Operating Systems, 4th Ed, 2014.
CSC204S2: Data Structures & Algorithms
Course Code: CSC204S2
Course Title: Data Structures & Algorithms
Credit Value: 02
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
30 70
Objectives: Introduce common data structures and standard algorithms for solving various types of problems.
Intended Learning Outcomes:
  • Analyse the correctness and the performance of complex algorithms
  • Discuss the implementation of standard data structures
  • Demonstrate skills in solving complex computational problems using suitable data structures
  • Explain the divide-and-conquer paradigm and dynamic programming strategies and their usages
Contents:
  • Proof of correctness of algorithms: Contrapositive and contradiction, Induction, and Loop invariants
  • Recurrence relations: Analysis of iterative and recursive algorithms (Quick sort and merge sort, etc.)
  • Fundamental Data Structures: Arrays, Lists, Stacks, Queues, Linked lists, Trees, and Graphs
  • Algorithm Design and Implementation Techniques: Divide-and-conquer paradigm, Dynamic programming algorithms, Recursive, and backtracking
  • Applications of Trees and Graphs: Binary search, Dijkstra’s shortest path, minimum spanning tree
Teaching/Learning Methods: Lecture, class discussions, tutorial discussions, Assignments
Assessment Strategy:
  • In-course Assessments —————————————30%
  • End-of-course Examination ———————————-70%
References:
  • T. Cormen, C. Leiserson, R. Rivest, and C. Stein, Introduction to Algorithms, 3rd Ed., MIT Press, 2009.
  • R. Sedgewick and K. Wayne, Algorithms, 4th Ed., Addison Wesley Publishers, 2011.
  • N. Karumanchi, Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles, 5th Ed. 2016.
  • S. S. Skiena, The Algorithm Design Manual, 2nd Ed., Springer, 2011.
CSC205S2: Software Engineering
Course Code: CSC205S2
Course Title: Software Engineering
Credit Value: 02
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
30 70
Objectives: Introduce all phases of the life cycle of a software system including requirements analysis and specification, design, construction, testing, deployment, operation, and maintenance.
Intended Learning Outcomes:
  • Discuss the software engineering principles and life-cycle
  • Identify different roles played by personnel in software development and their responsibilities
  • Construct software designs based on user requirements
  • Apply appropriate techniques in software development, testing, maintenance, and evolution
Contents:
  • Introduction to Software Engineering: Software characteristics, impact of software, importance of engineering approaches, challenges and ethics in software development
  • Introduction to systems analysis and design: Types of systems (transaction processing, management information, decision support, etc.), need for systems analysis and design, the system development life cycle, roles played by different personnel in system development life cycle including the role of the systems analyst
  • Software development process models: Waterfall model, prototyping model, spiral model, evolutionary model, iterative model and agile methodology
  • Software requirements and specifications: Types of requirements, requirement gathering processes and techniques, documenting requirements
  • Software analysis techniques: Data flow diagrams, data dictionaries, process specifications and structured decisions
  • Software design techniques: Object-oriented design using UML, Agile methodologies using SCRUM
  • Software testing: Development testing, test-driven development, release testing and user testing
  • Software maintenance and evolution: Evolution processes, program evolution dynamics, software maintenance and legacy system management
Teaching/Learning Methods: Lecture, case studies, Recitation oral questions, small groups discussions, Guided learning
Assessment Strategy:
  • In-course Assessments —————————————30%
  • End-of-course Examination ———————————-70%
References:
  • L. Sommerville, Software Engineering, 10th Ed, 2015.
  • E. Kendall and J. E. Kendall, System Analysis and Design, 9th Ed, 2013.
  • R. E. Beasley, Software Engineering: Principles and Practices, 2nd  Ed, 2015.
CSC206S4: Mathematics for Computing III
Course Code: CSC206S4
Course Title: Mathematics for Computing III
Credit Value: 04
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
60 140
Objectives: Encourage computer science students more aware of the importance of linear algebra in various computer science topics.
Intended Learning Outcomes:
  • Develop an understanding of the theory of vector spaces.
  • Use the theory of linear transformations and their matrix representation
  • Solve systems of linear equations and understand the conditions for the existence of solution
  • Use determinations and spectral properties.
Contents: Vectors in Rn norms and inner products in Rn Cauchy-Schwartz and triangular inequalities, Gram-Schmidt process. Elementary operations and elementary matrices, echelon and row reduced echelon matrices. Vector spaces, linear dependence, and independence, subspaces, basis and dimension, Steinitz replacement theorem. Linear transformations, matrix representation and change of base, column rank, row rank and nullity of matrix. Determinants and their properties, invertibility of a square matrix, Eigen values and Eigen vectors, characteristic polynomials, cayley-Hamilton theorem, orthogonal, symmetric and skew symmetric matrices, quadratic forms, diagonalization, System of linear equations.
Teaching/Learning Methods: Use of chalkboard, tutorial, textbook assignments, Guided learning
Assessment Strategy:
  • In-course Assessments —————————————30%
  • End-of-course Examination ———————————-70%
References:
  • Devi Prasad, Elementary Linear Algebra, 2nd Ed,, Narosa Publishing House, New Delhi, 2012
  • David Lay C, Linear Algebra and Its Applications, 4th Ed,, Pearson (Addison Wesley) Publication, 2012;
  • Seymour Lipschutz, Schaum’s Theory and problems of linear algebra, 2011
  • Datta K.B, Matrix and Linear Algebra, Prentice hall of India Pvt. Ltd, New Delhi–110001, 2003
CSC207S3: Computer Architecture
Course Code: CSC207S3
Course Title: Computer Architecture
Credit Value: 03
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
30 45 75
Objectives: Understand the design of a digital computer including the structure of a microprocessor, memory organisation and program execution cycle.
Intended Learning Outcomes:
  • Explain the conceptual design and the organisation of a computer system
  • Describe processor unit design and its operations
  • Summarise memory and Input/Output organisation
  • Build Assembly language programs
Contents:
  • Introduction to modern computer architecture: Architectural and technological design and development, and performance measures of a processor
  • Instruction set architecture models: Instruction set architectures and design, memory locations and operations, addressing modes, instruction types, microprogramming
  • Processing unit design: CPU basics, register set, data path, CPU instruction cycle, control unit design, instruction pipelining techniques
  • Memory hierarchies and Input/Output organisation: Memory structure and hierarchy, cache memory mapping, direct memory access, virtual memory, interrupt-driven I/O, and Input-Output interfaces
  • Assembly language programming: Instructions mnemonics and syntax, assembler directives and commands, assembly and execution of programs
Teaching/Learning Methods: Lecture, Programming practical sessions, Tutorial discussions, Assignments, Guided learning
Assessment Strategy:
  • In-course Assessment (Theory) —————————— 10%
  • In-course Assessment (Practical) —————————- 30%
  • End-of-course Examination ———————————- 60%
References:
  • D. A. Patterson and J. L. Hennessy, Computer Organization and Design: The Hardware and Software Interface, Morgan Kaufmann Publishers, 5th Ed, 2013.
  • M. Abo-El-Barr and H. El-Rewini, Fundamentals of Computer Organization and Architecture, A John Wiley & Sons Publication, 2004.
  • W. Stallings, Computer Organization and Architecture, Prentice Hall Publishers, 10th Ed, 2015.
CSC208S3: Concepts of Programming Languages
Course Code: CSC208S3
Course Title: Concepts of Programming Languages
Credit Value: 03
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
30 30 90
Objectives: Provide an overview of the basic concepts that appear in modern programming languages, the principles that underlie the design of programming languages, and their features.
Intended Learning Outcomes:
  • Describe the fundamental issues in the design and the use of major programming languages
  • Demonstrate the differences of programming paradigms in different programming languages
  • Discuss the use of formal methods for program verification
  • Build concurrent and functional programs
Contents:
  • Introduction: Programming domains, evaluation criteria for programming languages, influences on language design, programming language categories
  • Introduction to syntactic and semantic description of programming languages
  • Programming paradigms in different programming languages: Data types, Abstract data types, Data objects, Control structures, subprograms, lifetime and scope of variables and functions, object-oriented programming, exception handling
  • Concurrency: Basics of concurrency, subprogram-level concurrency, monitors, message passing, threads
  • Functional programming: Fundamentals and programming with functional programming languages
Teaching/Learning Methods:  Lectures, practical sessions, Tutorial discussions, Assignments
Assessment Strategy:
  • In-course Assessment (Theory)  ——————————– 10%
  • In-course Assessment (Practical) ——————————- 30%
  • End-of-course Examination ————————————- 60%
References:
  • R. W. Sebesta, Concepts of Programming Languages, Pearson, 2016.
  • J. C. Mitchell, Concepts in Programming Languages, Cambridge University Press, 2003.
  • C. Ghezzi and M. Jazayeri, Programming language concepts, 3rd Ed, 1997.
CSC209S3: Bioinformatics
Course Code: CSC209S3
Course Title: Bioinformatics
Credit Value: 03
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
30 30 90
Objectives: Provide theoretical and practical knowledge in Bioinformatics including analysis of protein and genome sequences by various computational tools.
Intended Learning Outcomes:
  • Describe computational genomics and phylogenetics concepts
  • Demonstrate the use of computational tools for sequence analysis in bioinformatics
  • Perform Data analysis and Pattern recognition in biological data
  • Formulate a biological problem as a computational problem
Contents:
  • Introduction to bioinformatics: Aims and tasks of bioinformatics, scope of bioinformatics and its applications, bioinformatics databases.
  • Structural bioinformatics: Protein structure and its visualsation, comparison and classification, protein structure prediction, RNA structure prediction, compression of genomic sequences such as Burrows–Wheeler transform, etc.
  • Pairwise sequence alignments and database search: Scoring matrix, Needleman-Wunsch algorithm, Smith-Waterman algorithm, Gotoh algorithm, heuristic methods
  • Phylogenetic tree and multiple sequence alignment: Neighbour-joining and UPGMA algorithms, phylogenetic tree,  Sequence profile & profile based alignments
  • Pattern Recognition: Clustering and visualisation, Hidden Markov models and Viterbi algorithm
  • Genomics and proteomics: Genome mapping, genome assembly, genome  comparison, functional genomics, proteomics and metabolomics
Teaching/Learning Methods: Lectures, Practical demonstration, recitation oral questions, vocabulary drills, and simulations.
Assessment Strategy:
  • In-course Assessment (Theory) ————————————– 10%
  • In-course Assessment (Practical) ———————————— 30%
  • End-of-course Examination —————————————— 60%
References:
  • B. Bergeron, Bioinformatics Computing, Prentice Hall, 2002.
  • K. Stephen, Introduction to Bioinformatics: A Theoretical and Practical Approach, 1st Ed, 2003
  • F. Azuaje and J. Dopazo, Data Analysis and Visualization in Genomics and Proteomics, John Wiley, 1st Ed, 2005
CSC210S3: Web Technologies
Course Code: CSC210S3
Course Title: Web Technologies
Credit Value: 03
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
15 60 75
Objectives: Develop proficiency in designing web applications using different emerging technologies and best practices.
Intended Learning Outcomes:
  • Design websites using advanced features of Markup and Client-side scripting languages
  • Use XML technologies for web applications
  • Employ knowledge on web programming to develop and maintain web applications
  • Develop secure web-based systems using server-side scripting languages
  • Recommend  practices that ensure legal and ethical responsibilities
Contents:
  • Advanced use of scripting languages: Client-side scripting (HTML, CSS, JavaScript, etc.) and Server-side scripting (PHP, JSP, ASP, etc.)
  • XML Technologies: XSL, XSLT, xPath and xQuery
  • Secure web programming: Authentication, access control, session management, SQL injections and cross site scripting (XSS)
  • Trends in Web development: Web 2.0, AJAX, JSON, Web Services
  • Best practices in Web Development: Architectural patterns, search engine optimization (SEO), frameworks, auditing and logging
Teaching/Learning Methods: Lectures, practical demonstration, assignments, small group discussions, individual mini projects
Assessment Strategy:
  • In-course Assessments (Theory) ———————————– 10%
  • In-course Assessments (Practical) ——————————— 30%
  • End-of-course practical Examination —————————– 60%
References:
  • S. Purewal, Learning Web App development, 1st Ed., 2014.
  • D. Stuttard and M. Pinto, The Web Application Hacker’s Handbook: Finding and Exploiting Security Flaws, 2nd Ed., 2011.
  • J. J. Jackson, Web Technologies: A Computer Science Perspective, 1st Ed., 2006.
  • A. Godbole and A. Kahate, Web Technologies, TCP/IP, Web/Java Programming, and Cloud Computing, McGraw Hill Education, 3rd Ed, 2017.
CSC211S2: Emerging Trends in Computer Science
Course Code: CSC211S2
Course Title: Emerging Trends in Computer Science
Credit Value: 02
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
15 30 55
Objectives: Provide an overview of the emerging trends in computer science.
Intended Learning Outcomes:
  • Demonstrate familiarity with latest trends in computer science and their applications
  • Describe the key architectures and applications in edge computing
  • Summarise standard open-source cloud and edge computing software for data analytics
  • Build microcontroller programs for IoT
  • Discuss the latest languages and frameworks used in IT industries
Contents:
  • Edge computing: Introduction to edge computing, cloud computing analytics pipeline, cloud databases
  • Data analytics: Introduction to deep learning, data mining, and its applications; introduction to hadoop, spark, and mapreduce
  • Internet of things (IoT): IoT concepts and technologies, its applications, micro-controller programming using sensors and actuators with arduino, IoT security and privacy issues
  • Blockchain: Fundamentals of blockchain, distributed ledger technology, cryptocurrency, and related algorithms
  • Introduction to mobile application development: Mobile app development platforms (Android, iOS, etc.), development and deployment of applications
[The course content will come directly from research papers, articles, and documentation of cloud and data center architectures and technologies.]
Teaching/Learning Methods: Lectures, Guest lectures, TechTalks, workshops, industrial visit
Assessment Strategy:
  • Formative Assessment: Industrial Visit* ——————————————10%
  • Summative Assessment: Individual/Group Assignments† ———————-90%

*Students will be taken to four to six leading software development companies in Sri Lanka in one or two industrial visit(s). Each visit may take up to three days. The type of assignments includes but are not limited to presentations and report writings on the observation of the industrial visit.
†At the end of each of the five chapters, students will be given five assignments (including programming tasks) based on the key areas covered in the five chapters. Of the five assignments, at most two may be done in groups.

References:
  • Holler, V. Tsiatsis, C. Mulligan, S. Avesand, S. Karnouskos and D. Boyle, “From Machine-to-Machine to the Internet of Things: Introduction to a New Age of Intelligence”, 1st Ed, Academic Press, 2014.

>>    Conference and journal papers related to the course material will be posted on the course website.

CSC212S2: Professional Practice
Course Code: CSC212S2
Course Title: Professional Practice
Credit Value: 02
Core/Optional: core
Hourly Breakdown: Theory Practical Independent Learning
30 70
Objectives: Provide a viewpoint on the commercial realities of software professionals and their required behavioural skills in day to day activities as an Information Technology professional.
Intended Learning Outcomes:
  • Discuss the concepts of professional practice in computing
  • Explain the context in which computer professionals work
  • Apply the key skills, knowledge, attributes and attitudes required to be an IT professional, with particular reference to professional practice, code of ethics and professional standards
  • Analyse legal issues in relation to data privacy and software use
  • Recognize professional conduct in an ethical manner  in day to day activities as an IT professional
  • Apply the principles of group work and reflect on the nature of working in teams, with the appreciation of the issues, such as ethics, conflict resolution, negotiation in culturally diverse workplace
Contents:
  • Computer ethics and professional practice: Ethical argumentation and theories, moral assumptions and values, the role of computing professional, and professional communication practices
  • Intellectual property: Intellectual property rights, Intangible digital intellectual property, legal foundations for intellectual property protection
  • Privacy and data protection: Privacy of computer data, respecting human dignity, protecting data stored on computers, ethical hacking and its implications
  • Security policies, laws and computer crimes: Computer crimes and legal redress for computer criminals, Issues surrounding the misuse of access and breaches in security, crime prevention strategies
Teaching/Learning Methods:  Lecture, small group discussions, tutorial classes
Assessment Strategy:
  • In-course Assessments —————————————30%
  • End-of-course Examination ———————————-70%
References:
  • G. W. Reynolds, Ethics in Information Technology, 5th Ed, 2014.
  • M. F. Bott, Professional Issues in Information Technology, The British Computer Society, 2nd Ed, 2014.
  • ACM Code of Ethics, ACM, www.acm.org, 2017.

The level-2S syllabi can be downloaded here

Course units effective from academic year 2014/2015 to 2017/2018

Core Course Units

CSC231SC2: Software Engineering
Course Code: CSC231SC2
Course Title: Software Engineering
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: None
Objectives: This course aims to provide fundamental knowledge and skills to carry out the fundamental activities in Software Engineering.
Intended Learning Outcomes:
  • Describe the importance of Software Engineering
  • Use appropriate techniques to gather requirements
  • Create software designs based on gathered requirements
  • Apply best practices in software development, maintenance and evolution
Contents:
  • Introduction to Software Engineering: Software characteristics, Impact of Software, Importance of Engineering approach, Challenges and Ethics
  • Models of Software Process: Waterfall model, Prototyping model, Spiral model, Evolutionary model, Iteration model and Agile model
  • Software Requirements and Specifications: Types of Requirements, Requirement gathering processes and techniques, Documenting requirements
  • Software Design and Implementation: Object-oriented design using UML, Design patterns, Implementation issues, Open Source development
  • Software Testing: Development testing, Test-driven development, Release testing and User testing.
  • Software maintenance and evolution: Evolution processes, Program evolution dynamics, Software maintenance and Legacy system management
Teaching Methods: Lecture by teacher, class discussion, recitation oral, lecture demonstration, small groups discussions, use of slides, textbook assignments, case studies
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • Ian Sommerville, Software Engineering, 10th Edition, 2015
  • Robert E Beasley, Software Engineering: Principles and Practices, 2nd Edition, 2015
CSC232SC2: Computer Programming II
Course Code: CSC232SC2
Course Title:  Computer Programming II
Academic Credits: 02 (90 Hours of practical and assignments)
Prerequisite/s: None
Objectives: This course aims to introduce the object oriented programming paradigms.
Intended Learning Outcomes:
  • Demonstrate the concepts of Object Oriented Programming paradigm
  • Create applications using Object Oriented Programming concepts
  • Design Relational Databases using database management principles
  • Develop web based applications that interact with database management systems
Contents:
  • Introduction to Concepts of Object Oriented paradigm: Objects, classes, methods, parameter passing, information hiding, inheritance, encapsulation and polymorphism
  • Object Oriented Programming using a high level programming language
    Data management using a relational model
  • Database design, modeling and development using Structured Query Language
  • Develop web based applications using PHP and MariaDB
Teaching Methods: Laboratory experiments, Supervised study, Practical records, Tutorial discussions by Instructors
Assessment/ Evaluation Details:
  • Continuous assessment on practical records ————30%
  • Two mid-semester practical examinations —————30%
  • Two end-of-semester practical examinations ————40%
Recommended Readings:
  • P. Deitel and H. Deitel. Java How To Program (Early Objects), 10th Edition, Prentice Hall, 2014.
  • D. Kalemis, The Fundamental Concepts of Object-Oriented Programming, 2013.
  • R. Elmasri and S. B. Navathe, Fundamentals of Database Systems, 7th edition, Addison-Wesley, 2015.
  • Daniel Bartholomew, Getting Started with MariaDB, 2nd edition, 2015.
CSC233SC2: Database Management Systems
Course Code: CSC233SC2
Course Title: Database Management Systems
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: None
Objectives: This course aims to introduce the fundamental concepts necessary for designing, using, and implementing database systems and applications.
Intended Learning Outcomes:
  • State key characteristics of a database
  • Develop a conceptual model for given requirements
  • Create an efficient relational database
  • Apply Structured Query Language to create and manipulate database
Contents:
  • Information Management Concepts: Information capture and representation, Information storage and retrieval, supporting human needs (searching, retrieving, linking, browsing, navigating, Analysing and indexing), Quality issues (Reliability, security, scalability, efficiency) and Information management applications
  • Database Systems: File systems, Evolution of DBMS, Database architecture, Data independence, DBMS user (designer, application developer, administrator), DBMS functions and system components
  • Data Modeling: Entity Relationship model, Relational model, Network model, Hierarchical model and object relational model
  • Relational Database Design: Schema design, mapping conceptual schema to relational schema, Normal Forms (1NF, 2NF, 3NF and BCNF)
  • Structured Query Language: Basic structure, Subqueries, Set operations, Aggregate functions, Derived relations, and Views
  • Relational algebra: Relational algebra, Tuple relational calculus and domain calculus
Teaching Methods: Use of diagrams and tables, Vocabulary drills, Recitation oral questions, Tutorial discussions by Instructors
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • RamezElmasri and Shamkant B. Navathe, Fundamentals of Database Systems, 7th edition, Addison-Wesley, 2015.
  • C.J. Date, An Introduction to Database Systems, 8th edition, Addison-Wesley 2003
  • Ramakrishnan and Gehrke, Database Management Systems, 3rd edition, McGraw-Hill 2003.
CSC234SC3: Computer Architecture
Course Code: CSC234SC3
Course Title: Computer Architecture
Academic Credits: 03(30 Hours of lectures and tutorials and 45 hours of Practical)
Prerequisite/s: None
Objectives: This course aims to teach students how a digital computer is designed and built and how it executes programs, including the structure of the microprocessor, memory organization and programme execution cycle.
Intended Learning Outcomes:
  • Explain the conceptual design and the organisation of a computer system
  • Describe processor unit design and its operations
  • Summarise memory hierarchies and Input / Output organisation
  • Write assembly language programs
Contents:
  • Introduction to modern computer architecture: Architectural and Technological Development, and Performance Measures
  • Instruction set architecture models: Instruction Set Architectures and Design, Memory Locations and Operations, Addressing Modes, Instruction Types, Microprogramming
  • Hardware structures for digital arithmetic computations
  • Processing Unit Design: CPU Basics, Register Set, Data Path, The CPU Instruction Cycle, Control Unit, Instruction pipelining techniques
  • Memory hierarchies and Input / Output organisation: Memory structure, Interrupt-Driven I/O, and Input-Output Interfaces
  • Assembly language programming: Instructions Mnemonics and Syntax, Assembler Directives and Commands, Assembly and Execution of Programs
Teaching Methods: Lecture by teacher, Programming practical sessions by teacher, Tutorial submission and discussion
Assessment/ Evaluation Details:
  • In-course Assessment (Theory) —————–20%
  • In-course Assessment (Practical) —————20%
  • End-of-course Examination ———————60%
Recommended Readings:
  • David A. Patterson and John L. Hennessy, Computer Organization and Design: The Hardware and Software Interface, Morgan Kaufmann Publishers, 5th Edition, 2013
  • Mostafa Abo-El-Barr and Hesham El-Rewini, Fundamentals of Computer Organization and Architecture, A John Wiley & Sons Publication, 2004
  • William Stallings, Computer Organization and Architecture, Prentice Hall Publishers, 10th Edition, 2015
CSC235SC4: Mathematics for Computing III
Course Code: CSC235SC4
Course Title: Mathematics for Computing III
Academic Credits: 04 (60 Hours of lectures and tutorials)
Prerequisite/s: None
Objectives: This course aims to encourage computer science students more aware of the importance of linear algebra in various computer science topics.
Intended Learning Outcomes:
  • Develop an understanding of the theory of vector spaces.
  • Understand the theory of linear transformations and their matrix representation
  • Solve systems of linear equations and understand the conditions for the existence of solution
  • Use Determinations and spectral properties.
Contents:

Vectors in Rn, norms and inner products in Rn, Cauchy- Schwartz and triangular inequalities, Gram-Schmidt process. Elementary operations and elementary matrices, echelon and row reduced echelon matrices. Vector spaces, linear dependence, and independence, subspaces, basis and dimension, Steinitz replacement theorem. Linear transformations, matrix representation and change of base, column rank, row rank and nullity of matrix. Determinants and their properties, invertibility of a square matrix, eigenvalues and eigenvectors, characteristic polynomials, cayley-Hamilton theorem, orthogonal, symmetric and skew symmetric matrices, quadratic forms, diagonalization, System of linear equations.

Teaching Methods:  Use of chalkboard, tutorial, textbook assignments
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • Devi Prasad, Elementary Linear Algebra (2nd Edition), Narosa Publishing House, New Delhi, 2012
  • David Lay C, Linear Algebra and Its Applications, 4th edition, Pearson (Addison Wesley) Publication, 2012;
  • Seymour Lipschutz, Schaum’s Theory and problems of linear algebra, 2011
  • Datta K. B, Matrix and Linear Algebra, Prentice hall of India Pvt. Ltd, New Delhi – 110001, 2003
CSC236SC2: Operating Systems
Course Code: CSC236SC2
Course Title: Operating Systems
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: None
Objectives: This course aims to provide fundamental concepts and functionalities of an operating system.
Intended Learning Outcomes:
  • Outline modern operating systems
  • Describe the core functionalities of an Operating System
  • Demonstrate the operations of a prototypical process manager
Contents:
  • Introduction to Operating System: Architecture of Modern Operating Systems (OS), Evolution of OS, OS operations and functionalities, and Open source OS
  • Processes and Threads: Concept of Process, Process states, Process Control Block, Schedulers, Context switch, Interprocess Communication, Process scheduling, Overview of Threads, Multicore Programming and Multithreading Models
  • Concurrency: Process synchronization (Race Condition, Critical-Section Problem, Mutex Locks, Semaphores, Classic Problems of Synchronization and Monitors), Deadlock (Characterization, Prevention, Avoidance, Detection and Recovery)
  • Memory management: Swapping, Memory allocation, Fragmentation, Paging, Segmentation, Virtual memory and Address Translation
  • Storage management: Mass Storage, Host attached storage, Network attached storage, Storage Area Network and RAID
  • File and I/O Device management: File Organization and Access, file system security, Device drivers, Direct Memory Access and Interrupt handling
Teaching Methods: Case studies, Simulation, Use of chalkboard, Recitation oral questions, Tutorial discussions by Instructors
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • Stallings, W. Operating systems: internals and design principles, 8th edition, Pearson, 2014.
  • Abraham Silberschatz, Peter Baer Galvin, Greg Gagne, Operating System Concepts, 9th edition, 2013.
  • S. Tanenbaum and Herbert Bos, Modern operating systems ,4th edition, 2014.
CSC237SC3: Concepts of Programming Languages
Course Code: CSC237SC3
Course Title: Concepts of Programming Languages
Academic Credits: 03 (30 hours of lectures and tutorials and 45 hours practical)
Prerequisite/s: None
Objectives: This course aims to provide an overview of the basic concepts that appear in modern programming languages, the principles that underlie the design of programming languages, and their features.
Intended Learning Outcomes:
  • Describe the fundamental issues in the design and the use of major programming languages
  • Demonstrate the differences of Programming paradigms in different programming languages
  • Write concurrent and functional programs
Contents:
  • Introduction: Programming Domains, Evaluation criteria for programming languages, Influences on Language design, Programming language categories
  • Introduction to syntactic and semantic description of programming languages
  • Programming paradigms in different programming languages: Data types, Abstract data types, Data objects, Control structures, Subprograms, object-oriented programming, Exception handling
  • Concurrency: Basics of concurrency, Subprogram-Level Concurrency, Monitors, Message Passing, Threads
  • Functional programming: Fundamentals and Programming with Functional Programming Languages
Teaching Methods: Lecture by teacher, Programming practical sessions by teacher, Tutorial submission and discussion
Assessment/ Evaluation Details:
  • In-course Assessment(Theory) —————–20%
  • In-course Assessment (Practical) ————–20%
  • End-of-course Examination ——————–60%
Recommended Readings:
  • Robert W Sebesta, Concepts of Programming Languages, Pearson.
  • John C Mitchell, Concepts in Programming Languages”, Cambridge University Press
CSC238SC2: Data Structures and Algorithms II
Course Code: CSC238SC2
Course Title: Data Structures and Algorithms II
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: None
Objectives: This course aims to introduce more complex data structures for the manipulation of data by using complex algorithms, evaluate solution methods and choose most appropriate solution.
Intended Learning Outcomes:
  • Explain the structure of complex data structures, their implementation, the algorithms that manipulate them and their amortized analysis
  • Develop efficient algorithms to solve complex problems
  • Evaluate complexity of algorithms
  • Demonstrate skills with applied algorithmic settings on operational research, parallel and distributed computing, and operating systems
Contents:
  • Proof of correctness of algorithms: Inductive proofs and loop invariants
  • Divide-and-conquer paradigm: Sorting and Searching algorithms that use this paradigm, synthesize divide-and-conquer algorithms, Derive and solve recurrences describing the performance of divide-and-conquer algorithms
  • Abstract data types: Implementation of Trees and Graphs, Dijkstra’s Algorithm, Depth-First vs Breadth-First Searches and their complexity
  • Greedy approach: Principles of Greedy Algorithms and their applications, Synthesize greedy algorithms, and analyze them
Teaching Methods: Lecture by teacher, class discussions, textbook assignments, laboratory exercises
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • T. Cormen, C. Leiserson, R. Rivest, and C. Stein, Introduction to Algorithms, 3rd Ed., MIT Press, 2009.
  • R. Sedgewick and K. Wayne, Algorithms, 4th Ed., Addison Wesley Publishers, 2011.
  • N. Karumanchi, Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles, 5th Ed. 2016.
  • S. S. Skiena, The Algorithm Design Manual, 2nd Ed., Springer, 2011.
CSC239SC2: Professional Practice
Course Code: CSC239SC2
Course Title: Professional Practice
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: None
Objectives: This course aims to provide a viewpoint on the commercial realities of Software professionals and the required practical skills in project management.
Intended Learning Outcomes:
  • Discuss the concepts of professional practice in computing
  • Explain the context in which computer professionals work
  • Analyse legal issues in relation to data privacy and software use
Contents:
  • Computer ethics and professional practice: Ethical argumentation and theories, Moral assumptions and values, the role of computing professional, and Professional Communication practices
  • Intellectual Property: Intellectual property rights, Intangible digital intellectual property, Legal foundations for intellectual property protection
  • Privacy and data protection: Privacy of Computer data, respecting human dignity, protecting data stored on computers
  • Security Policies, Laws and Computer Crimes: Computer crimes and legal redress for computer criminals, identity theft and recovery, Issues surrounding the misuse of access and breaches in security, Crime prevention strategies
Teaching Methods: Lecture by teacher, guest lectures, class discussions, small group discussions
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • George W. Reynolds , Ethics in Information Technology, 5th Edition, 2014.
  • Penny Duquenoy, Simon Jones, Barry G. Blundell: Ethical, Legal and Professional Issues in Computing, 2008
CSC241SC2: Group Project I
Course Code: CSC241SC2
Course Title: Group Project I
Academic Credits: 2 (15 hours of mentoring and 100 hours of project development)
Prerequisite/s: None
Objectives: This course aims to provide an opportunity to improve the skills and knowledge of students to develop software as a team using software engineering principles.
Intended Learning Outcomes:
  • Apply software engineering principles and practices for the planning and the development of a software product
  • Practice as an effective player of a software project team
  • Create professional-quality deliverables
  • Demonstrate abilities to manage pressures and procedures of a team work in an industrial setup
Contents:
  • This course unit introduces and applies a range of topics in software engineering in the context of a team project
  • Students will be assigned to a group of three to four members and each group works to specify, design, implement, and document a software project
  • The course unit is oriented around directed and self-paced learning, supported by weekly mentoring and discussions
Teaching Methods: Lecture by teacher, recitation of oral questions, lecture demonstration, textbook assignments, small group discussions, case studies, class projects, coaching.
Assessment/ Evaluation Details:
  • Group Project Report —————– 40%
  • Software product ———————- 30%
  • Project Presentation —————— 10%
  • Individual viva voce —————— 20%
CSC242SC2: Human Resource Management
Course Code: CSC242SC2
Course Title: Human Resource Management
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: None
Objectives: This course aims to cover the topics associated with Human Resource management from the perspective of the human resource management professionals, manager and employees in software development.
Intended Learning Outcomes:
  • Explain the importance of human resource management in IT industry
  • Discuss how to strategically plan for the human resources needed to meet organizational goals and objectives with the support of Information Technology
  • Explain how legislation impacts human resource management practice
  • Describe importance of human resource information system and its applications
  • Summarize the activities involved in evaluating and managing employee performance
Contents:

Evolution of Human Management, Definitions of Human Resource Management, Human Resource Management and Personnel Management Approaches, Equal Employment opportunity and Laws, Managing Diversity, Human Resource Audit, Human Resource information system, Job Analysis, Human Resource Planning, Recruitment and selection(e recruitment), Training and Development, Performance Appraisal.

Teaching Methods: Lecture by teacher, guest lectures, class discussions, small group discussions, case studies
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • Gray Dessler, Introduction to Human Resource Management 13th edition, 2011

Elective Course Units

CSC243SE2: Numerical Methods
Course Code: CSC243SE2
Course Title: Numerical Methods
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: None
Objectives: This course aims to enable the students to develop their programming skill in solving a variety of numerical problems.
Intended Learning Outcomes:
  • Explain the concepts of number representation and error analysis in digital computers
  • Apply numerical methods to solve systems of linear, nonlinear and differential equations
  • Use Curve fitting, Interpolation and Polynomial approximation techniques
Contents:
  • Numerical Representation and Error Analysis: floating-point arithmetic, Precision and Accuracy, rounding rules, Absolute and Relative error, and computational error analysis
  • Solving Systems of Linear Equations: Eigen values, Eigen vector, vector and matrix norms, LU decomposition, Gaussian elimination, Pivoting, Jacobi method, Gauss-Seidel method
  • Solving Systems of Nonlinear Equations: Bisection, false-position, incremental searches, Fixed-point iteration, Newton-Raphson, Secant method
  • Curve fitting, Interpolation and Polynomial Approximation: Lagrange interpolating polynomials, Newton interpolating polynomials, cubic and natural spline interpolation, convergence and error bound for polynomial interpolation of a continuous function
  • Numerical Integration and Differentiation: Newton-Cotes quadrature, Trapezoidal rule, Simpson’s rule, Romberg integration, and numerical differentiation
Teaching Meth Lecture – demonstration, tutorial discussions, recitation of oral questions, use of chalkboard and presentations
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • K. Sankara Rao: Numerical Methods for Scientists and Engineers, 2008
  • George W. Collins: Fundamental Numerical Methods and Data Analysis, 2003.
CSC244SE2: Information Assurance and Security
Course Code: CSC244SE2
Course Title: Information Assurance and Security
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: None
Objectives: This course aims to introduce computer security, including network security, platform security, and familiarize defense mechanisms to handle attacks.
Intended Learning Outcomes:
  • State various types of threats and attacks, and countermeasures
  • Describe various measures to avoid vulnerabilities in programs
  • Analyse network and platform to detect threats
  • Perform basic digital forensics
Contents:
  • Threats and Attacks: Types of Attacks, and Attacker goals, capabilities and motivations.
  • Defensive Programming: Input validation and data sanitization, Handling of exceptions and unexpected behaviours
  • Network specific threats and attacks: Denial of Service, spoofing, sniffing and traffic redirection, man-in-the-middle, message integrity attacks, routing attacks, traffic analysis, architectures for secure networks, and defense mechanisms and countermeasures
  • Platform Security: Code integrity and code signing, Secure booting, TPM and secure coprocessors, Attestation, and Security of embedded devices
  • Digital forensics: Principles and methodologies, attack detection and investigation
Teaching Meth Lecture by teacher, Recitation of oral questions, Lecture demonstration, Textbook assignments, Small group discussions, Use of slides, Use of recordings, Use of motion pictures, Case studies, Class Projects.
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • William Stallings, Cryptography and Network Security: Principles and Practice, 6th edition, Pearson, 2013.
  • Michael Jang, Security Strategies In Linux Platforms And Applications (Information Systems Security & Assurance), 1st edition, Jones & Bartlett Learning, 2010.
  • Charles P. Pfleeger and Shari Lawrence Pfleeger, Analyzing Computer Security: A Threat / Vulnerability / Countermeasure Approach, 1st Edition, Prentice Hall, 2011
CSC245SE2: Web Technologies
Course Code: CSC245SE2
Course Title: Web Technologies
Academic Credits: 2 (15 hours of lectures and 30 hours of practical )
Prerequisite/s: None
Objectives: This course aims to familiarise learners to develop web applications using different technologies and best practices.
Intended Learning Outcomes:
  • Design websites using advanced features of Markup and Client-side scripting languages
  • Use XML technologies for web applications
  • Develop secure web-based systems using server-side scripting languages
Contents:
  • Advanced use of scripting languages: Client-side scripting (HTML, CSS and JavaScript) and Server-side scripting (PHP/JSP/ASP)
  • XML Technologies: XSL, XSLT, xPath and xQuery
  • Secure web programming: Authentication, Access Control, Session Management, SQL Injections and Cross Site Scripting (XSS)
  • Trends in Web development: Web 2.0, AJAX, JSON, Web Services
  • Best practices in Web Development: Architectural patterns, Search Engine Optimization (SEO), Frameworks, Auditing and Logging
Teaching Methods: Lecture by teacher, class discussion, recitation oral questions, lecture demonstration, textbook assignments, small group discussions, individual projects.
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • Semmy Purewal, Learning Web App development, First edition, 2014.
  • Dafydd Stuttard and Marcus Pinto, The Web Application Hacker’s Handbook: Finding and Exploiting Security Flaws, Second edition, 2011.
CSC246SE2: Multimedia Technologies
Course Code: CSC246SE2
Course Title: Multimedia Technologies
Academic Credits: 2 (30 hours of lectures and tutorials)
Prerequisite/s: None
Objectives: This course aims to bring awareness regarding the numerous resources available in the area of multimedia and to discuss the relevance and underlying infrastructure of the multimedia.
Intended Learning Outcomes:
  • Explain the fundamental principles of multimedia
  • Demonstrate compression techniques used in multimedia
  • Discuss theories behind the multimedia components
Contents:
  • Introduction: Uses of Multimedia, Interaction Technologies, Multimedia Hardware and Devices
  • Compression Techniques in Multimedia: Compression Basics, Lossless and lossy compression techniques
  • Text in Multimedia: Visual Representation of Text, Digital representation of characters
  • Fundamentals of Colours, Colour Models and Dithering
  • Fundamentals of Images: Characteristics of Images, Image file formats, and Image compression standards
  • Digital Audio: Sound Processing, Representation of Audio files
  • Fundamentals of Video and Animation: Analogue and Digital Video Standards, Video Processing, Video compression standards and file formats, Basics of animation
  • Designing Multimedia: Development Phases, Multimedia Authoring and Tools, Multimedia in Internet and World Wide Web.
Teaching Methods: Lecture-demonstration, recitation of oral questions, use of chalkboard and multimedia presentations
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • Ze-Nian Li and Mark S. Drew, “Fundamentals of Multimedia”, Second Edition, 2014
  • Ashok Banerji; Ananda Mohan Ghosh, “Multimedia technologies”, 2010
  • T.M. Savage and K.E. Vogel, “An Introduction to Digital Multimedia”, Second Edition, 2013.
CSC247SE2: Bioinformatics
Course Code: CSC247SE2
Course Title: Bioinformatics
Academic Credits: 2 (30 hours of lectures and tutorials)
Prerequisite/s: None
Objectives: This course aims to provide theoretical and practical knowledge in Bioinformatics methods including accessing the major public sequence databases, use of different computational tools to find sequences, analysis of protein and nucleic acid sequences by various web-based tools.
Intended Learning Outcomes:
  • Appraise concepts, methods and tools used in Bioinformatics
  • Demonstrate the fundamental computational knowledge required to tackle problems in bioinformatics
  • Develop computational applications in bioinformatics using computer algorithms
Contents:
  • Introduction to Bioinformatics: aims and tasks of Bioinformatics, history and scope of bioinformatics and its applications, bioinformatics databases.
  • Structural Bioinformatics: protein structure basics, protein structure visualization, comparison and classification, protein secondary structure prediction, protein tertiary structure prediction, RNA structure prediction.
  • Sequence Alignment: pairwise sequence alignment, multiple sequence alignment, Hidden Markov Models.
  • Pattern Recognition: Clustering and Visualisation
  • Genomics and Proteomics: genome mapping, genome assembly, genome comparison, functional genomics, proteomics and metabolomics
Teaching Methods: Class discussion, recitation oral questions, vocabulary drills, simulations.
Assessment/ Evaluation Details:
  • In-course Assessments —————–30%
  • End-of-course Examination ————70%
Recommended Readings:
  • B. Bergeron, Bioinformatics Computing, Prentice Hall, 2002.
  • Krawetz. Stephen A: Introduction to Bioinformatics: A Theoretical and Practical Approach, 2003
  • F. Azuaje and J. Dopazo, Data Analysis and Visualization in Genomics and Proteomics, John Wiley, 2005

In Level 2S, students shall offer credit valued course units aggregating to a minimum of thirty-twocredits and a maximum of thirty-fourcredits.
The students shall offer:
1). Level 2S Core course units in Computer Science (aggregating to twenty-six credits).
2). Level 2S Elective course units in Computer Science (aggregating to six credits).
3). Level 2G Auxiliary course units:

(i). English Language and
(ii). Career Guidance.

Course units effective from academic year 2006/2007 to 2014/2015

CSC201SC3: Principles of Computer Architecture
Course Code CSC201SC3
Course Title Principles of Computer Architecture
Academic Credits 03 (30 hours of lectures and tutorials and 30 hours of practical)
Objectives:
  • To introduce computer architecture focusing on microprocessor design, including CPU and memory.
Contents:
  • Introduction to Computer Systems: Historical Background, Architectural Development and Styles, Technological Development, Performance Measures.
  • Instruction Set Architecture and Design: Memory Locations and Operations, Addressing Modes, Instruction Types.
  • Assembly Language Programming: Instructions Mnemonics and Syntax, Assembler Directives and Commands , Assembly and Execution of Programs.
  • Processing Unit Design: CPU Basics, Register Set, Datapath, CPU Instruction Cycle, Control Unit.
  • Memory System Design: Basic Concepts, Cache Memory, Main Memory, Virtual Memory, Read-Only Memory .
  • Input– Output Design and Organization: Basic Concepts, Programmed I/O, Interrupt-Driven I/O, Direct Memory Access (DMA), Buses, Input–Output Interfaces.
  • Pipelining Design Techniques: General Concepts ,Instruction Pipeline, Example Pipeline Processors, Instruction-Level Parallelism .
  • Reduced Instruction Set Computers (RISCs): RISC/CISC Evolution Cycle RISCs Design Principles, Overlapped Register Windows, RISCs Versus CISCs.
Assessment/ Evaluation Details:
  • In-Course Assessments : Two In-Course Assessments, An In-Course Assessment may be either a written examination of half an hour duration or an assignment or a poster presentation or a Multimedia presentation (30%)
  • End of Course examination : A written examination of two hours duration (Expected to answer three out of four questions) (70%)
CSC202SC3: Concepts of Programming Languages
Course Code CSC202SC3
Course Title Concepts of Programming Languages
Academic Credits 03 (30 hours of lectures and tutorials and 30 hours of practical)
Objectives:
  • To present the fundamental issues in the design and use of major programming languages.
  • To present implementation concepts and designs.
  • To prepare the students for further study of programming languages, help develop an appreciation of a programming language as a tool for software construction.
  • To enable the students to evaluate and choose a language to match the problem.
Contents:
  • Design and evaluation criteria for programming languages: (Procedural, structured, functional, object oriented and scripts).
  • Introduction to syntactic and semantic description of programming languages.
  • Basics of programming language implementation.
  • A comparison of design choices across programming paradigms: data objects, data types, control structures, sub-programs.
  • Basics of concurrency.
Assessment/ Evaluation Details:
  • In-Course Assessments : Two In-Course Assessments, An In-Course Assessment may be either a written examination of half an hour duration or an assignment or a poster presentation or a Multimedia presentation (30%)
  • End of Course examination : A written examination of two hours duration (Expected to answer three out of four questions) (70%)
CSC203SC3: Cryptography and Data Security
Course Code CSC203SC3
Course Title Cryptography and Data Security
Academic Credits 03 (30 hours of lectures and tutorials and 30 hours of practical)
Objectives:
  • To understand the principles and practices of cryptographic techniques.
  • To understand a variety of generic security threats and vulnerabilities, and identify and analyse particular security problems for a given application.
  • To understand the design of security protocols and mechanisms for the provision of security services needed for secure networked applications.
Contents:
  • General introduction to security.
  • Cryptographic techniques: classical cryptography, conventional cryptography such as DES and AES, public-key cryptography such as RSA, and digital signatures such as DSA.
  • Security services: key management, agreement and distribution, Public Key Infrastructure (PKI), authentication, authorisation and access control services.
  • Network security applications: IP security, Web security, Secure Electronic Transaction (SET), Electronic mail security, firewalls and Virtual Private Networks (VPNs).
  • Distributed System security.
  • Mobile system & E-commerce securities: 3G security, e-payment systems, fair data exchange.
Assessment/ Evaluation Details:
  • In-Course Assessments : Two In-Course Assessments, An In-Course Assessment may be either a written examination of half an hour duration or an assignment or a poster presentation or a Multimedia presentation (30%)
  • End of Course examination : A written examination of two hours duration (Expected to answer three out of four questions) (70%)
CSC204SC3: e-Technologies
Course Code CSC204SC3
Course Title e-Technologies
Academic Credits 03 (30 hours of lectures and tutorials and 30 hours of practical)
Objectives:
  • To familiarise with the latest developments in e-technologies and modern network technologies which are used in e-business, e-banking and e-learning.
Contents:
  • Introduction: Web designing with HTML, CSS, CSS2, Introduction to XML, XSL, XSQL, DTD, WAP, WML and their use in experience, Web transfer of audio, video and text.
  • Electronic business: Introduction to electronic business, trends in electronic business, Types of electronic business, models of electronic business, Security of electronic business, electronic signature, Examples of electronic business.
  • Computer communication and presentation: Use and programming of PHP scripts (Perl, ASP), Connection of Scripts and databases, Using of application Flash for making web pages.
  • Marketing: Marketing, promotion and publicity on Internet, Electronic enterprise, Competence in e-business and marketing.
  • Electronic banking: Introduction to electronic banking, Information systems of e-banking, Electronic services of e-banking and security.
  • Electronic learning: Introduction to electronic learning and distance studying, Technologies, trends, practices of e-learning.
Assessment/ Evaluation Details:
  • In-Course Assessments : Two In-Course Assessments, An In-Course Assessment may be either a written examination of half an hour duration or an assignment or a poster presentation or a Multimedia presentation (30%)
  • End of Course examination : A written examination of two hours duration (Expected to answer three out of four questions) (70%)

Core Course Units

CSC201GC2: Data Structures and Algorithms
Course Code CSC201GC2
Course Title Data Structures and Algorithms
Academic Credits 02 (30 hours of lectures and tutorials)
Objectives:
  • To understand basics of algorithms, concepts of time and space complexity in worst, average and best cases, and the asymptotic behaviour and order of magnitude of functions.
  • To be able to develop efficient algorithms for simple computational tasks and to compute complexity measures of algorithms, including recursive algorithms using recurrence relations.
  • To know and apply a range of algorithm design techniques.
  • To know and understand a wide range of searching and sorting techniques and to implement them
  • To be familiar with several data structures and to get to know their constructions and uses.
Contents:
  • General concepts : Introduction to Algorithms and Mathematical background – Time and space Complexity, Asymptotic Analysis; Average, best and worst case analysis, recurrence relations and their use in algorithm analysis
  • Data structures: Introduction and Implementation of Stacks and Queues, Linked Lists, Hash Tables, and Trees, and their applications
  • Algorithm design techniques: Greedy methods, Divide and conquer methods, Dynamic programming, Recursion, Influence of data structure on algorithm performance
  • Graphs and digraphs: Representations, Breadth and depth first searches, Shortest path, Minimal spanning tree, Hamiltonian path and travelling salesperson problems etc.
  • Sorting: selection, insertion, bubble sort. Quicksort, mergesort, heapsort , Bucket sorting, Worst case and average behaviour, Order statistics
Assessment/ Evaluation Details:
  • In-course Assessments
    • Attendance at lectures and submission of tutorials ——————— 10%
    • Two Short exams based on tutorials (10-15 minutes each) ————– 10%
    • Two other exams (20 minutes each) ————————————- 20%
  • End-of-course Examination ————————————————– 60%
CSC202GC2: Database Management Systems
Course Code CSC202GC2
Course Title Database Management Systems
Academic Credits 02 (30 hours of lectures and tutorials)
Objectives:
  • To give principles and practical solutions for storage and retrieval of information.
  • To emphasis both on the use and on the implementation of database management systems, enabling students in both logical and physical database design and complex query execution using standard query languages.
  • To introduce the modern databases for multimedia and spatial requirements.
  • To familiarize with a broad range of data management issues including data integrity, security, transaction and concurrency.
Contents:
  • Introduction to Database: Evolution of Database technology, Data models, three level schema architecture, Database languages, Physical file structures and Indexing techniques.
  • Database design: ER model, Relational Model, Normalisation – First, Second, Third and Boyce-Codd normal forms.
  • Relational algebra and calculus: Query languages, Relational algebra operations, relational algebra query expressions, tuple calculus and domain calculus query expressions.
  • Introduction to SQL: Basic structure, Sub queries, Set operations, Aggregate functions, Derived relations, Views.
  • Advanced Features: Transaction, concurrency control and recovery; Security levels, Integrity constraints,
  • Modern databases: Object Oriented Databases and Relational object Database design, Persistence Objects, Query languages.
Assessment/ Evaluation Details:
  • In-course Assessments
    • Attendance at lectures and submission of tutorials ——————— 10%
    • Two Short exams based on tutorials (10-15 minutes each) ————– 10%
    • Two other exams (20 minutes each) ————————————- 20%
  • End-of-course Examination ————————————————– 60%
CSC203GC2: Software Engineering
Course Code CSC203GC2
Course Title Software Engineering
Academic Credits 02 (30 hours of lectures and tutorials)
Objectives:
  • To offer a foundation in programming skills for popular languages and platforms.
  • To systematically address theories and methods of typical software engineering processes and models governed by industry standards.
  • To emphasize the development of reliable and maintainable software via system requirements and specifications.
  • To enable students capable in software design methodologies including object-oriented design implementation, integration, and testing.
Contents:
  • Introduction to Software Engineering: Software characteristics, Software applications, software process models.
  • Project Management: Project planning, risk management, human interactions in software development.
  • Analysis principles: Analysis modelling, design methods, software testing methods
  • Computer Aided Software Engineering: Taxonomy of CASE tools, application of case tools, integrated case environment.
  • Client-Server Software Engineering: Structure and usage of client-server systems, distribution of software component.
Assessment/ Evaluation Details:
  • In-course Assessments
    • Attendance at lectures and submission of tutorials ——————— 10%
    • Mini project (implementation + presentation) ————————— 30%
  • End-of-course Examination ————————————————– 60%
CSC204GC2: Practical Computing - II
Course Code CSC204GC2
Course Title Practical Computing – II
Academic Credits 02 (90 hours of Practical)
Objectives:
  • To enable to implement several data structures and algorithms
  • To enable to be familiar with designing and creation of databases and to manipulate them using query languages.
  • To enable to efficiently find solutions to numerical and non-numerical problems.
  • To enable to be familiar with programming in logic.
Contents:
  • 90 Hours practical works scheduled by the Department.
Assessment/ Evaluation Details:
  • Attendance at practical sessions ——————————————— 10%
  • Continuous assessment on practical records ——————————– 20%
  • Two mid-semester exams each of 30-45 minutes duration —————- 20%
  • Two end semester examinations each of two hours duration ————- 50%
Elective Course Units

CSC221GE2: Numerical Computing
Course Code CSC221GE2
Course Title Numerical Computing
Academic Credits 02 (30 hours of lectures and tutorials)
Objectives:
  • To enable the students to gain basic knowledge in numerical methods.
  • To learn a programming language and tools suitable for numerical computing.
  • To develop their programming skill in solving a variety of numerical problems.
Contents:
  • Data Representation and Computational Error: floating-point numbers, rounding rules, machine precision, floating-point arithmetic; well-posed problems, problems vs. algorithms, data error vs. computational error, forward error vs. backward error, conditioning of a problem, stability of an algorithm.
  • System of Linear Equations: vector spaces, matrices and other relevant matters; vector norm, matrix norm, condition number of a matrix; LU factorization, Gauss-Seidel elimination, Error estimation; refinement of special cases.
  • System of Non Linear Equations: Simple vs. multiple root; bisection, fixed-point iteration, Newton-Raphson method, secant method; fixed-point iteration, Jacobian matrix, Newton’s method; convergence rate and order analysis.
  • Interpolation and Polynomial Approximation: Lagrange and Newton forms, Hermite interpolation, cubic and natural spline interpolation; convergence and error bound for polynomial interpolation of a continuous function; Chebyshev polynomials; Weierstass Approximation Theorem, best uniform approximation, least squares approximation.
  • Numerical Integration and Differentiation: Newton-Cotes quadrature, Trapezoid rule, Simpson’s rule; Romberg integration.
Assessment/ Evaluation Details:
  • In-course Assessments
    • Attendance at lectures and submission of tutorials ——————— 10%
    • Mini project (implementation + presentation) ————————— 30%
  • End-of-course Examination ————————————————– 60%
CSC222GE2: Programming in Logic
Course Code CSC113GC2
Course Title Data Structures and Algorithms I
Academic Credits 02 (30 hours of lectures and tutorials)
Objectives:
  • To explain the fundamentals of simple predicate logic and its use for knowledge representation and deduction.
  • To understand the fundamentals of logic programming, in particular the sources of non-determinism, the significance of displays of computational spaces and the significance of language semantics.
  • To demonstrate familiarity with the language Prolog and its practical use.
Contents:
  • Formal Logic: revision of Propositional and First Order Predicate Logic, conjunctive normal form, clausal form, knowledge representation by clausal form.
  • Logic Programming: basic concepts, the resolution rule of inference, application strategies, pattern matching, backtracking, computational space – total and standard, non-determinism, procedural and declarative semantics.
  • Prolog: Horn Clauses, terms and terminology, built-in predicates, non-determinism and input/output, the cut, negation, list processing, abstract data types.
  • Applications: Realising the suitability of Logic Programming in solving problems, Identifying problems that can be solved by Logic Programming, Conversion of problems in to those suitable for Logic programming, Implement solving methods to find solutions.
Assessment/ Evaluation Details:
  • In-course Assessments
    • Attendance at lectures and submission of tutorials ——————— 10%
    • Mini project (implementation + presentation) ————————— 30%
  • End-of-course Examination ————————————————– 60%