Level – 2G

Course units effective from the academic year 2016/2017 to date

CSC201G2: Database Systems Concepts and Design
Course Code: CSC201G2
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.
CSC202G2: Computer Programming II
Course Code: CSC202G2
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.
CSC203G2: Operating Systems
Course Code: CSC203G2
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.
CSC204G2: Data Structures & Algorithms
Course Code: CSC204G2
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.
CSC205G2: Software Engineering
Course Code: CSC205G2
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.

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

Core Course Units

CSC231GC2: Software Engineering
Course Code: CSC231GC2
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
CSC232GC2: Computer Programming II
Course Code: CSC232GC2
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.
CSC233GC2: Database Management Systems
Course Code: CSC233GC2
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.
CSC234GC2: Operating Systems
Course Code: CSC234GC2
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.

Elective Course Units

CSC235GE2: Group Project I
Course Code: CSC235GE2
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%
CSC236GE2: Data Structures and Algorithms II
Course Code: CSC236GE2
Course Title: Data Structures and Algorithms II
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: CSC113GC2
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:
  • Helen Sharp, Yvonne Rogers, and Jenny Preece. Interaction Design: Beyond human-computer interaction, 4th ed., Wiley Publishers, 2015.
  • Ben Shneiderman, Catherine Plaisant, Maxine Cohen and Steven Jacobs. Designing the User Interface: Strategies for Effective Human-Computer Interaction, 5th ed., Addison Wesley publishers, 2009.
CSC237GE2: Numerical Methods
Course Code: CSC237GE2
Course Title: Numerical Methods
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: CSC111GC3
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.
CSC238GE2: Information Security Management
Course Code: CSC238GE2
Course Title: Information Security Management
Academic Credits: 02 (30 Hours of Lectures and Tutorials)
Prerequisite/s: CSC112GC3
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
CSC239GE2: Multimedia Technologies
Course Code: CSC239GE2
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.
CSC241GE2: Bioinformatics
Course Code: CSC241GE2
Course Title: Bioinformatics
Academic Credits: 2 (30 hours of lectures and tutorials)
Prerequisite/s: CSC112GC3
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

Course units effective from academic year 2004/2005 to 2014/2015

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%

Course units before academic year 2004/2005

CSG 25: Numerical Methods I

Handling of Errors
Fixed point and Floating point arithmetic, implication of finite precision, errors in numerical computation.

Interpolation
Polynomial and interpolations.

Approximations
Uniform approximation, discrete least squares approximation, polynomial approximation, Fourier’s approximation, Chebyshev economisation.

Numerical Integration and Differentiation
Interpolatory numerical quadrature, Gaussian quadrature, adaptive integration, Romberg integration, numerical differentiation.

Solutions of Non – Linear Equations
Bisection method, fixed point iteration, Newton’s method, Aitken’s process, rates of convergence of the various methods.

Algorithms
Algorithms to implement the above methods in a computer using Pascal, C or FORTRAN.

(Prerequisites CSG 11).

CSG 26: Design of Algorithms

Introduction
Definition as a methodology introduced by a mathematician named Abuja’far Mohammed ibn Musa al Khowarizmi: characteristics of algorithms; designing, devising and expressing algorithms, use and removal of recursion; validation, analysis, testing and profiling.

Greedy Method
Graph algorithms such as finding spanning tree and single source shortest path etc. Knapsack problem, job sequencing, etc.

Divide and Conquer
Binary search; merge sort; quick sort, etc.

Backtracking
N-queen problem; sum of subsets, graph colouring; Hamiltonian cycle; knapsack problem.

Dynamic Programming
All pairs shortest paths; optimal binary search trees; Knapsack problem; travelling sales person problem.

Branch and Bound
Knapsack problem; travelling sales person problem.

Graph / Tree Algorithm
Breadth-first search in graph (AND-graph, OR-graph etc.); tree traversal on binary, threaded AVL and game trees, handling Btree and disk memory management.

Symbol Table Algorithm
Dynamic tree tables, Hash tables.

(Prerequisites CSG 14)

CSG 27: Introduction to Programming in Logic and Expert systems.

Introduction to Predicate Calculus
Syntax and semantic of predicate calculus, existential and universal quantifiers and variables; first `order predicate calculus; matching of predicate calculus expressions: binding and unification of variables; inference rules: Sound, complete rules: modus ponens, modus tolens, and – elimination, and – introduction, universal instantiation, and resolution etc.

Resolution Procedure
Conversion of predicate calculus expressions into clause forms, horn clauses; resolution refutation and theorem proving.

Prolog Programming
Introduction to prolog as a declarative language as well as a procedural language, syntax of prolog; representation of facts, rules, and queries; predicates, clauses, goals; flow of control; variable binding, unification and backtracing, cut fail, efficiency.

Introduction to Expert Systems
A brief introduction to Artificial Intelligence (A1), its techniques and to expert systems (ES); various definitions of ES, components of ES:” knowledge acquisition and representation;
inference mechanism; forward and backward chaining; handling uncertainty; examples of expert systems and expert system shell/tools.

(Prerequisites CSG 12)

CSG 28: Introduction to Database Management Systems

Introduction
Definition as a centralised storage of database; prevention of redundancy and inconsistency; data independence; data abstraction; data models; data definition and data manipulation language (DDL and DML); database manager, administrator, users; overall system structure: Indexing and hashing.

Entity Model – Relationship Model
Entities, relationships, entity-sets, relationship-sets, attributes. mapping constraints, keys, E-R diagrams, reduction of E-R diagrams to tables, design of an E-R database scheme.

Relational Model
Structure of relational database, relational algebra and calculus;

Normalisation and Relational Database Design
Relational database design and its pitfalls; normalisation (First second, and third) using functional dependencies and multivalued functional dependencies.

Query Processing
SQL, query – by – example, Quell; Query interpretation, equivalence of expressions

Recovery and Concurrency
Transaction recovery, system media recovery, concurrency problems, locking, timestamping.

Security and integrity
General considerations and violations, security specification in SQL; other aspects of security (encryption etc.).

Case Study
Construction and manipulation of database using dBASE III+, dBASE IV, ACCESS or ORACLE etc. and SQL or alike.

(Prerequisite CSG 14.)