Level 01
COSC 11012 - Introduction to Computing

Course Code

: COSC 11012

Title

:  Introduction to Computing

Pre-Requisites

G.C.E. A/L

Co-Requisites 

: COSC 11023

Learning Outcomes:

At the completion of this course student will be able to:

  • explain how data are represented, stored, and manipulated by computer hardware
  • use abstraction and decomposition when reasoning about complex systems and problems
  • describe how data can be transmitted over networks and the security concerns that arise
  • apply computing tools and techniques to solve problems at multiple levels of abstraction
  • discuss the impact of computing within economic, social, and cultural contexts
  • recognize problem solving techniques and algorithm development using computers.

Course Content:

Main components of a Computer; Organization of a Computer; Classification of Computers; Software: Systems Software and Application Software; Operating Systems, functions and types of operating systems; Utility Programs, Translators (compilers, interpreters, assemblers); Application Programs: Algorithms, Computer programs, Computer programming Languages; Generations of programming languages; Number Systems; Conversions between number systems; Use of number systems; Binary addition and subtraction; Representation of Numbers; Representation of Characters: ASCII, EBCDIC, Unicode; Representation of Images and Video; Introduction to logic gates; Introduction to Computer Networks; Network topologies; Advantages and disadvantages of computer networks, Introduction to the Internet; Services available on the Internet; Information Systems; Systems Development Life Cycle (SDLC); Social, Ethical, Legal and Economic impacts of the use of computers; Computer crime.

Method of Teaching and Learning:

Lectures, Tutorials and  Assignments

Assessment:

End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading:

  1. Norton, P. (2006). Introduction to Computers. 6th Tata McGraw-Hill Publishing Company limited, India.
  2. Parsons, J. J., Oja, D. (2003). New Perspective on Computer Concepts. 6th Course Technology a division of Thomson learning Inc.
  3. Ram, B. (2005). Computer Fundamentals: Architecture and organization. 3rd New Age Publications, India.
  4. Forouzan, B. A., Firouz, M. (2008). Foundations of Computer Science. 2nd Cengage Learning EMEA.
  5. Gaddis, T. (2017). Starting out with Python. 4th Edition. Pearson.
COSC 11023 - Fundamentals of Programming

Course Code

: COSC 11023 

Title

: Fundamentals of Programming

Pre-Requisites

G.C.E. A/L

Co-Requisites 

COSC 11012

Learning Outcomes:
At the completion of this course student will be able to:

  • define the basic concepts of the structured programming
  • identify suitable data types and data structures for the real-world problems
  • explain main control structures of procedural programming languages
  • develop structured programs using a procedural language
  • describe functional hierarchical code organization
  • demonstrate knowledge on textual information, characters and strings
  • use language specific features on program development and error handling.

Course Content:

Introduction to Programming: A brief history and types of programming languages; Program Design: Modular programming concepts, Elegance in program design Implementing an algorithm using a programming language Program testing and program; The High Level programming language: First program, compilation, syntax errors, Data types and variable scopes, Constants, Identifiers, Expressions and assignment, Input and output, Arrays, Program selections (if, if-else, switch), Repetition (for, do-while), Control structures; Introduction to Functions; Storage classes; Scope of a variable; Pointers; Structured data types (arrays, structures, unions), Programmer defined data types; Recursion; Inheritance; Virtual Functions, and Dynamic Binding; File processing; Multi-file programming; Bit manipulation and enumerations; Static and Dynamic memory handling; error handling (debugging).

Method of Teaching and Learning:

Lectures, Tutorials, Assignments and Practical 

Assessment:

End-of-course written examination  and practical examination and other assessments announced at the beginning of the course unit.

Recommended Reading:

  1. Gottfried, B.S. (2001). Schaum’s Outline of Theory and Problems of Programming in C. 2nd McGraw Hill Professional Publishing.
  2. Gaddis, T. (2017). Starting out with Python. 4th Pearson.
  3. Kelly, A. and Pohl, I. (1999). A Book on C: Programming in C. 4th Addison Wesley Longman Inc.
  4. Rajaraman, V. (2004). Computer Programming in C. 6th Prentice Hall.
  5. Zelle, J. M. (2016). Python programming: an introduction to computer science. 3rd Franklin, Beedle & Associates, Inc.
  6. Guttag, J. (2016). Introduction to Computation and Programming Using Python: With Application to Understanding Data. 2nd Edition. MIT Press.

 

COSC 12033 - Data Communication and Networks

Course Code

: COSC 12033

Title

: Data Communication and Networks

Pre-Requisites

: COSC 11012

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:

  • examine the use of computer networks to identify the forces behind their development
  • explain the principles of a layered protocol architecture
  • identify and describe the system functions in the protocol layers
  • discuss different coding schemes
  • design various network topologies, architectures, protocols and algorithms.

Course Content:

Introduction: Data communication, network structures, types of networks, the Internet, protocols and standards, layers of the OSI model; The physical layer: Transmission media (guided and unguided), analog and digital transmission, transmission impairment, encoding techniques, modulation techniques and modems, multiplexing, circuit switching and packet switching; Telephone Networks and DSL technology; The medium access sub-layer: Ethernet (CSMA/CD), token bus, token ring and FDDI; The data link layer: Framing, error detection and correction, error control and flow control, data link protocols; The network layer: Addressing, routing algorithms, internetworking and network layer protocols; The transport layer: Transport layer protocols (UDP and TCP) and connection management; The session layer: Token management and synchronization; The presentation layer: Data compression, data security and encryption; The application layer: Client-Server model, application level protocols for file transfer, electronic mail, network management, Hypertext transfer and World Wide Web; Advanced telecommunication services and developments: ISDN, Frame Relay Networks, ATM Networks, packet switching and X.25 Networks; LAN, MAN, WAN and Networking software; Networking and Internetworking Devices.

Method of Teaching and Learning:

Lectures, Tutorials  and Assignments 

Assessment:

End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading:

  1. Stallings, W. (2013). Data and computer communications. 10th Pearson.
  2. Forouzan B. A. (2012). Data Communications and Networking. 5th McGraw Hill.
  3. Tanenbaum A.S., Wetheral David J. (2010). Computer Networks. 5th Prentice-Hall International.
  4. Kurose, J. F., Ross, K. W. (2016). Computer networking: a top-down approach. 7th Pearson.
  5. Stallings, W., Case, T. (2012). Business Data Communications- Infrastructure, Networking and Security. 7th Edition. Pearson.
COSC 12043 - Object Oriented Programming

Course Code

: COSC 12043

Title

: Object Oriented Programming

Pre-Requisites

: COSC 11023

Co-Requisites 

: None

Learning Outcomes:

At the completion of this course student will be able to:

  • apply design and development principles in the construction of software systems of varying complexity
  • develop the structures to represent objects and the algorithms to perform operations
  • explain and utilize object-oriented concepts
  • use an industry-leading Integrated Development Environment (IDE) to develop and manage software projects.

Course Content:

Background and motivation of Object Oriented Methods; Concepts of Object Oriented project management issues; Principles and features of an industry standard Object Oriented Programming Language (OOPL) (e.g.: Java/C++); Basic OOPL features: Class and object models, object declaration and creation, instantiable classes, visibility modifiers, arrays of objects, self-referencing pointers, reuse of code, static methods, arithmetic expressions, variables, scope, Event Driven input and output, file objects and looping statements, primitive and reference types, strings, use of string buffer, passing objects as parameters, exceptions; Advanced OOPL features: Overloading, data abstraction, encapsulation, inheritance, polymorphism, file processing, templates, exceptions and container classes.

Method of Teaching and Learning:

Lectures, Tutorials, Assignments and Practical 

Assessment:

End-of-course written examination and practical examination  and other assessments announced at the beginning of the course unit.

Recommended Reading:

  1. Wu, T. (2009). An Introduction to Object-Oriented Programming with Java. 5th McGraw Hill.
  2. Savitch, W. (2017). Problem Solving with C++. 10th Pearson.
  3. Liang, Y. D. (2017). Introduction to Java Programming and Data Structures, Comprehensive Version. 11th Pearson.
  4. Dale, N. B., Weems, C. (2004). Programming in C++. 3rd Jones & Bartlett Learning.
  5. Gamma, E. (1995). Design patterns: elements of reusable object-oriented software. Pearson Education, India.

Level 02
COSC 21052 - Software Engineering

Course Code

: COSC 21052

Title

: Software Engineering

Pre-Requisites

: COSC 11012, COSC 12043

Co-Requisites 

None

Learning Outcomes:

At the completion of this course student will be able to:

  • list software development process models
  • recognize the need of formal approach for software development
  • identify software requirements of an organization
  • analyze, design and review software systems for organizations
  • discuss ethical issues posed by technological advances.

Course Content:

Software and Software Engineering: Software processes, requirement engineering, system modeling, software prototyping, formal specification, architectural design, object-oriented design, user interface design, software testing, project management, managing people, software cost estimation, quality management, configuration management; Introduction to Ethics: Variety of ethical views, justice and social contract theory; professional conduct followed in the IT industry.

Method of Teaching and Learning:

Lectures, Tutorials and Assignments 

Assessment:

End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading:

  1. Sommerville, I. (2015). Software engineering. 10th Pearson.
  2. Pressman, R. S. (2014). Software engineering: a practitioner's approach. 8th McGraw-Hill Education.
  3. Wiegers, K., Beatty, J. (2013). Software requirements. 3rd Microsoft Press.
  4. Cohn, M. (2010). Succeeding with agile: software development using Scrum. 1st Addison-Wesley Professional.

 

COSC 21063 - Data Structures and Algorithms

Course Code

: COSC 21063

Title

: Data Structures and Algorithms

Pre-Requisites

: COSC 12043

Co-Requisites 

None

Learning Outcomes:

At the completion of this course student will be able to:

  • apply object‐oriented programming, as a modern tool to solve practical computing problems
  • identify basic data structures and algorithms
  • demonstrate the ability to analyze, design, apply and use data structures and algorithms to solve practical problems and evaluate their solutions
  • use complexity analysis to compare algorithm performances.

Course Content:

Data structure concepts; Arrays; Simple linked lists; Different implementations of lists; Stacks and queues; Sets; Binary-trees; Balanced trees; Heaps; Priority queues; Dictionaries/maps; Graphs; Introduction to complexity: Big or little O-notation; Algorithms: Recursion and backtracking, Sorting and searching, hashing.

Method of Teaching and Learning:

Lectures, Tutorials, Assignments and Practical

Assessment:

End-of-course written examination ,practical examination  and other assessments announced at the beginning of the course unit.

Recommended Reading:

  1. Lewis, J., DePasquale, P., Chase, J. (2016). Java Foundations: Introduction to Program Design and Data Structures. 4th Pearson.
  2. Shaffer, C. A. (2011). Data Structures and Algorithm Analysis in Java. 3rd Dover Publications.
  3. Weiss, M. A. (2013). Data structures & algorithm analysis in C++. 4th Pearson Education.
  4. Lee, K. D., Hubbard, S. (2015). Data Structures and Algorithms with Python. Springer Publications.
  5. Weiss, M. A. (2011). Data structures and algorithm analysis in Java. 3rd Pearson.
  6. Carrano, F. M., Henry T. M. (2015). Data Structures and Abstractions with Java. 4th edition. Pearson
COSC 22073 - Computer Architecture and Operating Systems

Course Code

: COSC 22073

Title

: Computer Architecture and Operating Systems 

Pre-Requisites

COSC 11012, COSC 11023

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:

  • explain how data and programs are represented in computers
  • compare and contrast different computer architectures
  • describe the functionality and working of the building blocks of computer systems
  • demonstrate an understanding of assemblers and programming in assembly language
  • explain the key roles played by an operating system
  • identify the major components of operating systems
  • describe the concepts, models and approaches involved in design of operating systems.

Course Content:

Computer Architecture: Data and program representation, different computer architectures, processor architectures, instruction set architecture, fetch-execute cycle, energy and cost, instruction pipelining, branch prediction, operand addressing, microcode, parallelism, hardware and software integration, assemblers, programming in assembly language, memory and storage, bus architectures, I/O architectures.

Operating Systems: roles of an operating system, different operating systems, multi-programming, time sharing, concurrency control, deadlocks and starvation, memory management, process management (processes models, processor scheduling), synchronization.

Method of Teaching and Learning:

Lectures, Tutorials  and Assignments 

Assessment:

End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading:

  1. Comer, D. E. (2004). Essentials of Computer Architecture. Pearson.
  2. Stallings, W. (2011). Computer Organization and Architecture: Designing for Performance. 10th Pearson.
  3. Hennessy, J. L., Patterson, D. A. (2011). Computer architecture: a quantitative approach. 5th Morgan Kaufmann.
  4. Stallings, W. (2014). Operating Systems: Internals and Design Principles. 8th Pearson.
  5. Silberschatz, A., Gagne, G., Galvin, P. B. (2018). Operating System Concepts. 10th Edition. Wiley.
COSC 22083 - Database Management Systems

Course Code

: COSC 22083

Title

:  Database Management Systems 

Pre-Requisites

: COSC 11023

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:

  • describe various logical database architectures
  • design & develop databases using relational model and manipulate data
  • use databases in software solutions
  • apply theories behind various database models and query languages in practical scenarios
  • discuss security and integrity policies relating to databases.

Course Content:
Introduction to database systems: Database system concepts and architecture, Three tire architecture and mapping; Data Modelling: Entity-Relationship (ER) model and Enhanced Entity-Relationship (EER) model; Relational model: Introduction to the relational model, Relational constraints, Normalization approach for relational database design (first, second, third and BCNF normal forms), Advantages and disadvantages of the normalization approach; Logical database design: ER to relational mapping and EER to relational mapping, Data manipulation: Relational algebra and relational calculus, Data manipulation using SQL, Security and integrity in databases; Physical database design: Storing data and primary file organization, File organization and indexes (primary, secondary, clustering and multilevel indexes etc.).

 

Method of Teaching and Learning:

Lectures, Tutorials, Assignments and Practical

Assessment:

End-of-course written examination, Practical Examination and other assessments announced at the beginning of the course unit.

Recommended Reading:

  1. Ricardo, C. M., Urban, S. D. (2015). Databases Illuminated. 3rd Jones & Bartlett Publishers.
  2. Elmasri, R., Navathe S.B. (2017). Fundamentals of database systems. 7th Pearson Education India.
  3. Hoffer, J. A., Venkataraman, R., H., (2019), Modern Database Management, 13th Edition Pearson.
  4. Ramakrishnan, R., Gehrke, J. (2002). Database management systems. 3rd McGraw Hill.
  5. Molinaro, A. (2005). SQL Cookbook: Query Solutions and Techniques for Database Developers. O'Reilly Media, Inc.

Level 03
PRPL 31992 - Professional Placement

Course Code

: PRPL 31992

Title

: Professional Placement

Pre-Requisites

: All Level 1 and 2 course modules

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:

  • develop significant commitment in the students’ profession/specialization
  • integrate classroom theory with workplace practice
  • develop greater clarity about academic and career goals 
  • develop new or advanced skills.

Course Content:
The students will be placed in selected industries and institutions where they carryout computer science related work/research for a period of six weeks. The required resource materials will be supplied by the relevant institution/industry.

Method of Teaching and Learning:

Training under the supervision and guidance of a suitable trainer in the computing industry.

Assessment:

Evaluation of the progress report submitted by the trainer, and the student’s technical report.

Recommended Reading:

  1. Reading and reference material recommended by the industry supervisor and the course coordinator.



COSC 31093 - Enterprise Software Design and Architecture

Course Code

: COSC 31093

Title

: Enterprise Software Design and Architecture

Pre-Requisites

: COSC 21063, COSC 22083

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • explain the concept of Enterprise Software Architecture
  • apply different architectural styles to solve different business models
  • analyze and design appropriate enterprise applications
  • identify how design patterns will resolve subtle coding issues.
Course Content:
Introduction to Enterprise Applications: web, standalone and cloud applications; Software System Architecture; Architecture Views and Decomposition; Architecture Styles; Middleware, strategies for data Processing; Service-Oriented-Architecture; Resource-Oriented Architecture; Domain-Driven Architecture; Event-Driven Architecture; Design Patterns; Micro services; RESTful Architecture; Best practices in application development; Web Services: Web Services Frameworks and their Performance, Simple Object Access Protocol (SOAP), Web Services Description Language (WSDL), Web Services Security.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments 

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Taylor, R. N., Medvidovic N., Dashofy, E. (2009).  Software Architecture: Foundations, Theory, and Practice. 1st Edition. Wiley.
  2. Gorton, I. (2006). Essential software architecture. Springer Science & Business Media.
  3. Brooks Jr, F. P. (2010). The design of design: Essays from a computer scientist. Pearson Education.
  4. Gamma, E., Helm, R., Johnson, R., Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. 1st Edition. Addison-Wesley.
  5. Freeman, E., Robson, E., Bates, B., Sierra, K. (2004). Head First Design Patterns. O'Reilly Media Inc.
COSC 31103 - Web & Internet Technologies

Course Code

: COSC 31103

Title

Web & Internet Technologies

Pre-Requisites

: COSC 12033, COSC 12043, COSC 22083

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • describe basic concepts of web and the internet technologies
  • use client-side technologies for building, usable, accessible, standard compliant web pages
  • use server-side technologies for building secure database driven web applications
  • describe and critically discuss the design, engineering, legal, social, ethical and professional issues and considerations involved in web application development.
Course Content:
Overview of the Internet; Web technologies: Standard client side technologies including HTML/ XHTML, CSS, JavaScript and related libraries, DOM, cookies. Web servers and server-side technologies including Apache, PHP, session state and database connectivity using MySQL; Issues and considerations in web application development: standards, maintenance, efficiency, stability, usability, accessibility, law, security and privacy, emerging trends and best practices.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical

Assessment:
End-of-course written examination and Practical Examination  and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Connolly, R., Hoar, R. (2015). Fundamentals of Web Development. 2nd Pearson.
  2. Deitel, P. J., Deitel, H. M., Deitel, A. (2011). Internet & World Wide Web How to Program. 5th Pearson.
  3. Welling, L., Thomson, L. (2016). PHP and MySQL Web Development. 5th Addison-Wesley.
  4. Jackson, J. C. (2006). Web Technologies: A Computer Science Perspective. Prentice Hall.
  5. Scobet P., Lingras, P. (2016). Web Programming and Internet Technologies: An E-Commerce Approach. 2nd Edition. Jones & Bartlett Learning.
COSC 31112 - Visual Programming

Course Code

: COSC 31112

Title

: Visual Programming

Pre-Requisites

: COSC 21052, COSC 22083

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • apply the concepts of visual programming and algorithm design
  • use appropriate controls and events to develop user-friendly graphical interfaces
  • use available classes and technologies to access database through graphical user interfaces
  • design and develop stand-alone and web-based software applications for real-world problems.
Course Content:
Introduction to Visual Programming: A brief history and types of programming languages, use of an Integrated Development Environment, basic language facilities; events, errors and exceptions; Facilities for building GUI interfaces: Form design, Uses of forms, Controls and control properties, Design of forms; Event driven programming: Introduction to basic control objects, Branching, Control loops, Procedures and functions, interacting with the user, stream-based file I/O, Arrays, Database connectivity, connecting through ODBC, Introduction to Threads, Debugging and Testing; Querying the Database: Query by example, Query by form, Use of SQL commands; Reports: Development of a variety of reports including tabular, group totals, sub totals and other standard reports; Introduction to web application development.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical

Assessment:
End-of-course practical examination  and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Hoisington, C. (2017). Microsoft Visual Basic 2017 for Windows, Web, and Database Applications: Comprehensive. 1st Course Technology.
  2. Gaddis, T., Irvine, K. (2016). Starting out with Visual Basic. 7th Pearson.
  3. Deitel, P. J., Deitel, H. (2016). Visual C# How to Program. 6th Pearson.
  4. Sharp, J. (2018). Microsoft Visual C# Step by Step. 9th Microsoft Press.
  5. Gaddis, T (2016). Starting out with Visual C#. 4th Edition. Pearson.
COSC 34122 - Cyber Security

Course Code

: COSC 34122

Title

: Cyber Security

Pre-Requisites

: COSC 12033

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • identify the elements that define cybersecurity
  • explain the legal, social, and political frameworks that affect cybersecurity
  • identify and define challenges to achieving cybersecurity
  • identify and explain social, legal, political, and economic impediments to cybersecurity
  • examine approaches to maintain a reasonable state of cybersecurity and to address breaches effectively, ethically, and according to law.
Course Content:
Introduction to cybersecurity: Ethics and Legal Issues, Responsibilities of Knowledge and Power, Ethical Disclosure, Surveillance vs Attack; Classes of Attack: Code injection, Time-of-check-to-time-of-use race conditions, Sybil attack; Systems Security: Authentication, Policy, Secure design principles (Saltzer and Schroeder), Information flow; Network Security: Web: SQL command injection, phishing, and cross-site scripting (XSS), No trusted external party, Network reconnaissance and information theory, Botnets; Data Hiding: Cryptography, Obfuscation and diversity methods, Differential Privacy (Dwork), Anonymity; Intrusion Detection and Response: Anomaly (network and host), Specification based (network and host), Viruses, Worms, Denial of Service. Human Factors: Captcha’s, Social engineering, Economics of Security, Incentives and motivations for attack.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments 

Assessment:
End-of-course  written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Stallings, W. (2018). Effective Cybersecurity: A Guide to Using Best Practices and Standards. 1st Addison-Wesley Professional.
  2. Singer, P. W., Friedman, A. (2014). Cybersecurity: What everyone needs to know. 1st OUP USA.
  3. Moschovitis, C. (2018). Cybersecurity Program Development for Business: The Essential Planning Guide. 1st John Wiley & Sons.
  4. Pfleeger, C. P., Pfleeger, S. L., Margulies, J. (2015). 5th Security in computing. Prentice Hall.
  5. Schneier, B. (2015). Applied cryptography: protocols, algorithms, and source code in C. 20th Anniversary Edition. John Wiley & Sons.
COSC 32133 - Full-Stack Software Development

Course Code

: COSC 32133

Title

: Full-Stack Software Development

Pre-Requisites

: COSC 31093, COSC 31103

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • apply the software development process
  • use front-end, back-end and middle-tier application frameworks, libraries, and tools
  • develop problem solving and logic building aptitude by gaining expertise in data structures and algorithms
  • demonstrate professional skills needed in application development
  • evaluate developed software using appropriate tools
  • discuss threats to privacy posed by modern technology.
Course Content:
Engage in software development process: use HTML (latest version), JavaScript libraries or framework, server can be built-in or separate, write services and work with Object Relational Mappers; Determine how to modularize components: models, controllers, data and interfaces; Single Page Application; Dependency Injection; Services; Containerization; Scalability; Testing tools; Version controlling; Introduction to the current practices and technologies. Privacy and Intellectual property: Perspective on privacy, public information intellectual property rights, trade secrets, patents and copyright; Networked Communications: email and spam, censorship, social media censorship, internet addition.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments 

Assessment:
End semester project and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Northwood, Chris. (2018).   The Full Stack Developer: Your Essential Guide to the Everyday Skills Expected of a Modern Full Stack Web Developer.
  2. Zammetti, F. W. (2020).  Modern Full-Stack Development: Using TypeScript, React, Node.js, Webpack, and Docker
  3. Hinkula, Juha. (2018).  Hands‑On Full Stack Development with Spring Boot 2.0 and React: Build.
  4. Hoque , Shama (2018).  Full‑Stack React Projects: Modern Web Development Using React 16, Node.
  5. Baase, S., Henry, T. M. (2017). A Gift of Fire: Social, Legal, and Ethical Issues for Computing Technology. 5th Edition. Pearson.
COSC 32142 - Artificial Intelligence

Course Code

: COSC 32142

Title

: Artificial Intelligence

Pre-Requisites

: COSC 11012, COSC 11023

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • understand various definitions of Artificial Intelligence
  • apply search techniques for problem solving
  • identify and use different knowledge representation techniques
  • analyze and select the most efficient and appropriate mechanism applicable to a given problem that can be solved using artificial intelligence.
Course Content:
The history of artificial intelligence and foundations of artificial intelligence; Intelligent agents: Agents and Environments, The Nature of Environments, Structure of agents, Classes of intelligent agents, Hierarchies of agents, Problem-Solving Agents; Intelligent search techniques: Uninformed search, Informed (Heuristic) search, Adversarial Search, Games as search problems; Learning and Knowledge Representation: Forms of Learning, Logic-based representation, Procedural representations, Structured representations; Languages and programming techniques for Artificial Intelligence; Overview of major areas and Future trends in Artificial Intelligence.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments 

Assessment:
End-of-course written examination and Practical Examination  and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Russell, S. J., Norvig, P. (2009). Artificial Intelligence: A Modern Approach. 3rd Prentice Hall.
  2. Luger, G. F. (2008). Artificial Intelligence: Structures and Strategies for Complex Problem Solving. 6th The Benjamin/Cummings Publishing Company, Inc.
  3. Yao, M., Zhou, A., Jia, M. (2018). Applied Artificial Intelligence: A Handbook for Business Leaders. 1st TOPBOTS.
  4. Neapolitan, R., Jiang, X. (2012). Contemporary Artificial Intelligence. Chapman & Hall.
  5. Stone, J. V. (2019). Artificial Intelligence Engines: A Tutorial Introduction to the Mathematics of Deep Learning. Sebtel Press.
COSC 32152 - Mobile Application Development

Course Code

: COSC 32152

Title

: Mobile Application Development

Pre-Requisites

: COSC 12043, COSC 22083

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • describe various mobile computing applications, technologies and wireless communication
  • explain common paradigms in mobile computing
  • develop mobile application using a selected development environment
  • construct different user interfaces and review user experiences
  • discuss current trends in mobile development.
Course Content:
Overview: Mobile Technologies, anatomy of a mobile device, survey of mobile devices, applications of mobile computing; Application Design: Context, information architecture, design elements, mobile web vs native Applications; Development Environments: Introduction to Android Studio and Xcode, The Model-View-Controller model, The Delegate Pattern, The iPhone and Android SDKs; The User Experience: The small screen problem, the unified look and feel paradigm, common user interface guidelines; The current trends and future of mobile development.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical

Assessment:
End-of-course written examination and practical examination  and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Pattanaik, P. K., Mall, R. (2015). Fundamentals of Mobile Computing. 2nd PHI Learning.
  2. Sinha, K., Ghosh S. C., Sinha, B. P. (2016). Wireless Networks and Mobile Computing. 1st Chapman and Hall/CRC.
  3. Huang, D., Wu, H. (2017). Mobile Cloud Computing: Foundations and Service Models. 1st Morgan Kaufmann.
  4. Horton, J. (2018). Android Programming for Beginners: 2nd Packt Publishing.
  5. Clayton, C. (2018). iOS 12 Programming for Beginners. 3rd Edition. Packt Publishing.
COSC 32162 - Big Data Technologies

Course Code

: COSC 32162

Title

: Big Data Technologies

Pre-Requisites

: COSC 12033, COSC 12043

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • describe MapReduce as a computation model and an execution framework
  • use the big data application stack
  • compare different tools in the Hadoop stack fit in the big picture of big data analytics
  • design distributed machine learning algorithms
  • use cloud computing services (Amazon Web Services) to build your clusters and run large-scale data processing applications
  • identify and describe the data warehousing concepts and operations.
Course Content:
Big Data introduction: Big data: definition and taxonomy, Big data value for the enterprise, Setting up the demo environment, first steps with the Hadoop ecosystem; The Hadoop ecosystem: Introduction to Hadoop, Hadoop components: MapReduce/Pig/Hive/HBase, loading data into Hadoop, Handling files in Hadoop, Getting data from Hadoop; Querying big data with Hive: Introduction to the SQL Language, from SQL to HiveQL, using Hive to query Hadoop files; Big Data & Machine Learning: Machine learning tools: Spark & SparkML, H2O, Azure ML; Data Warehousing: Data Warehouse introduction, SQL OLAP Extensions, An Algebraic OLAP Operator; Object-Oriented and Object-Relational Databases: Object-Oriented Data Model, Object-Relational Database Systems.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical

Assessment:
End-of-course written examination and practical examination  and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. White, T. (2015). Hadoop: The definitive guide. 4th O'Reilly Media, Inc..
  2. Mayer-Schönberger, V., Cukier, K. (2013). Big data: A revolution that will transform how we live, work, and think. Houghton Mifflin Harcourt.
  3. Marz, N., Warren, J. (2015). Big Data: Principles and best practices of scalable real-time data systems. New York; Manning Publications Co.
  4. Jukic, N., Vrbsky, S., Nestorov, S. (2020). Database systems: Introduction to databases and data warehouses. 2nd Edition. Prospect press.

Level 04
COSC 44172 - Human Computer Interaction

Course Code

: COSC 44172

Title

: Human Computer Interaction

Pre-Requisites

: COSC 21052, COSC 31103

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • describe how interface design practices and methods can be integrated with user centered principles and methods now being employed
  • identify current trends in HCI research
  • discuss the nature of the HCI design process
  • apply an integrated perspective to the design process
  • recognize the difficulties and pitfalls of translating theory and principles derived from research findings into practical advice on user-centered design
  • apply metaphorical reasoning and conceptual models to user interface design
  • express strategies for improving web site usability
  • describe the major aspects of usability engineering
  • apply usability and design principles to the evaluation of current interfaces.
Course Content:
Fundamentals of HCI (theories, models, paradigms, usability studies and controlled experimentation); Interaction design basics; HCI in the software process: Design and implementation, Evaluation of user interfaces, universal design and user support; Current trends in HCI research; Ubiquitous and pervasive computing; Human factors that affect the development of software, and design of user interfaces for interactive systems.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments 

Assessment:
End-of-course written examination  and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Sharp, H., Preece, J., Rogers, Y. (2019). Interaction Design: Beyond Human-Computer Interaction. 5th Wiley.
  2. Shneiderman, B., Plaisant, C., Cohen, M., Jacobs, S., Elmqvist, N. (2016). Designing the user interface: strategies for effective human-computer interaction. 6th Pearson.
  3. Dix, A., Finlay, J. E., Abowd, G. D., Beale, R. (2003). Human-Computer Interaction. 3rd Pearson.
  4. Platt, D. (2016). The Joy of UX: User Experience and interactive design for developers. 1st Edition. Addison-Wesley Professional.
COSC 44183 - Computer Graphics and Visualization

Course Code

: COSC 44183

Title

: Computer Graphics and Visualization

Pre-Requisites

: COSC 11023

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • explain fundamental concepts within computer graphics such as geometrical transformations, illumination models, removal of hidden surfaces and rendering
  • identify the features in fundamental algorithms of computer graphics to compare and evaluate them
  • apply fundamental principles within interaction programming
  • demonstrate fundamental concepts within information visualization and scientific visualization.
Course Content:
Introduction: History of computer graphics, applications, graphics pipeline, physical and synthetic images, synthetic camera, modeling, animation, rendering, relation to computer vision and image processing, review of basic mathematical objects (points, vectors, matrix methods); Introduction to OpenGL: OpenGL architecture, primitives and attributes, simple modeling and rendering of two- and three-dimensional geometric objects, indexed and RGB color models, frame buffer, double buffering, GLUT, interaction, events and callbacks, picking; Geometric transformations: Homogeneous coordinates, affine transformations (translation, rotation, scaling, shear), concatenation, matrix stacks and use of model view matrix in OpenGL for these operations; Viewing: Classical three dimensional viewing, computer viewing, specifying views, parallel and perspective projective transformations, Visibility- z-Buffer, BSP trees, Open-GL culling, hidden-surface algorithms; Shading: Light sources, illumination model, Gouraud and Phong shading for polygons. Rasterization- Line segment and polygon clipping, 3D clipping, scan conversion, polygonal fill, Bresenham's algorithm; Discrete Techniques: Texture mapping, compositing, textures in OpenGL; Ray Tracing- Recursive ray tracer, ray-sphere intersection; Representation and Visualization: Bezier curves and surfaces, B-splines, visualization, interpolation, marching squares algorithm.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical

Assessment:
End-of-course written examination and practical examination  and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Angel, E., Shreiner, D. (2014). Interactive Computer Graphics with WebGL. 7th Pearson.
  2. Gordon, V. S., Clevenger, J. L. (2018). Computer Graphics Programming in OpenGL with JAVA 2nd Mercury Learning & Information.
  3. Gortler, S. J. (2012). Foundations of 3D computer graphics. MIT Press.
  4. Marschner, S., Shirley, P. (2015). Fundamentals of computer graphics. 4th Edition. CRC Press.
COSC 44193 - Advanced Databases

Course Code

: COSC 44193

Title

: Advanced Databases

Pre-Requisites

: COSC 22083

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • apply the principles of query optimization to a database schema
  • identify transaction processing
  • apply concurrency control techniques
  • describe different types of database failures
  • apply appropriate recovery techniques
  • formulate complex queries
  • develop stored procedures, functions and triggers
  • design queries against a distributed database management system
  • design queries against database designed with object-relational extensions
  • develop and query No-SQL databases.
Course Content:

Advanced Features of SQL: Relational algebra review and join commands, additional join operations, SELF join, FULL joins, Set-Theoretic operators, the HAVING clause, views; Stored Procedures and Triggers: Stored Procedures and their usage in relational database management systems, stored functions, constraints and triggers; Query Optimization: Stages in query processing, query processing algorithms, query plan execution, cost-based query optimization; Concurrency and Recovery: Transactions and the ACID property of transactions, serializability and the serializability theorem, two-phase locking, time ordering techniques, recovery techniques; Database System Architectures: Centralized and Client-Server systems, parallel databases, distributed databases, heterogeneous and homogeneous databases, distributed query processing;

No-SQL Databases: Motivations for Not Just/No SQL (NoSQL) databases, variety of NoSQL databases, introduction to Key-Value databases, Key-Value database.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical

Assessment:
End-of-course written examination and practical examination  and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Elmasri, R., Navathe S.B. (2017). Fundamentals of database systems. 7th Pearson Education India.
  2. Silberschatz, A., Korth, H. F., Sudarshan, S. (2019). Database system concepts. 7th McGraw-Hill.
  3. Molinaro, A. (2005). SQL Cookbook: Query Solutions and Techniques for Database Developers. O'Reilly Media, Inc.
  4. Perkins, L., Redmond, E., Wilson, J. (2018). Seven databases in seven weeks: a guide to modern databases and the NoSQL movement. 2nd Pragmatic Bookshelf.
  5. Harrison, G. (2015). Next Generation Databases: NoSQL and Big Data. Apress.
  6. McLaughlin, M., Harper, J. (2014). Oracle Database 12c PL/SQL advanced programming techniques. McGraw-Hill Education Group.
COSC 44202 - Object Oriented Analysis and Design

Course Code

: COSC 44202

Title

: Object Oriented Analysis and Design

Pre-Requisites

: COSC 32133

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • design and implement projects using Object Oriented concepts
  • model real-world scenarios using UML diagrams
  • apply appropriate software design patterns effectively in large-scale software development
  • generate code from design using an appropriate software tool
  • compare and contrast various testing techniques.

Course Content:
UML Diagrams: Introduction to OOAD, Unified Process, UML diagrams, use case, class diagrams, interaction diagrams, state diagrams, sequence diagrams, activity diagrams, package diagrams, component and deployment diagrams, relationship between different diagrams, logical architecture and its refinements; General Responsibility Assignment Software Patterns (GRASP): Designing objects with responsibilities, creator, information expert, low coupling, high cohesion, controller, polymorphism; Coding and Testing.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Larman, C. (2004). Applying UML and patterns: an introduction to object oriented analysis and design and iterative development. 3rd Prentice Hall.
  2. Bennett, S., Farmer, R. (2010). Object-oriented systems analysis and design using UML. 4th McGraw-Hill.
  3. Gamma, E., Helm, R., Johnson, R., Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. 1st Addison-Wesley.
  4. Fowler, M. (2004). UML distilled: a brief guide to the standard object modeling language. 3rd Addison-Wesley Professional.
  5. Jorgensen, P. C. (2013). Software testing: a craftsman's approach. 4th Edition. Auerbach Publications.
COSC 44213 - Information Assurance and Security

Course Code

: COSC 44213

Title

: Information Assurance and Security

Pre-Requisites

: COSC 12033

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • explain basic security concepts such as identity management and access control, as well as the basic cryptographic operations
  • demonstrate knowledge in SAML, XACML and Web services security
  • practice Multilevel and multilateral security
  • formulate forensics analysis after a security attack
  • describe the enterprise security relating to the business process modeling.

Course Content:
Introduction: Enterprise security and risk analysis; Identity management: Passwords and two-factor authentication, authentication protocols, single sign-on: SAML and OpenID; Access control: Access control matrix, ACLs, capabilities and PKI, attacks and sandboxing; Safety analysis; HRU and Take-grant; Federated access control: XACML; Web service security; Enterprise web service security and SAML; REST security and OAuth; Private key security: Stream ciphers, Birthday theorem, Block ciphers, Hash functions; Public key security: Diffie-Helman, El Gamal, RSA, Public key protocols, Advanced cryptosystems; Cryptography APIs: Java Cryptography Extension (JCE), Bouncy Castle, PKI and certificate management; Multilevel security: Bell-Lapadula, noninterference, non-deducibility, Role-based access control; Multilevel integrity: Biba, Multilateral security: Compartmentation, Chinese Wall, Clark-Wilson, BMA; Secondary uses and privacy.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Anderson, R. (2008). Security engineering. 2nd John Wiley & Sons.
  2. Saydjari, S. O. (2018). Engineering Trustworthy Systems: Get Cybersecurity Design Right the First Time. 1st McGraw-Hill Education.
  3. Shimeall, T., Spring, J. (2013). Introduction to information security: a strategic-based approach. Syngress.
  4. Hook, D. (2005). Beginning cryptography with Java. John Wiley & Sons.
  5. Vacca, J. R. (2017). Computer and information security handbook. 3rd Edition. Morgan Kaufmann.
COSC 44223 - Machine Learning

Course Code

: COSC 44223

Title

: Machine Learning

Pre-Requisites

: COSC 32142

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • explain necessity of machine learning
  • describe wide variety of learning algorithms
  • compare and contrast different learning models
  • solve real world problems using machine learning techniques
  • demonstrate programming skills that will necessary to build intelligent, adaptive artifacts.

Course Content:
Introduction to machine learning; Types of Learning (Supervised, Unsupervised and Reinforcement); Inductive Classification; Decision Tree Learning; Ensemble Learning; Experimental Evaluation of Learning Algorithms; Computational Learning Theory; Rule Learning: Propositional and First-Order; Artificial Neural Networks; Support Vector Machines; Bayesian Learning; Instance-Based Learning; Clustering; Dimensionality Reduction; Association Rule Discovery;  Language Learning; Text Classification; Introduction to Reinforcement Learning models.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Mitchell, T. M. (1997). Machine Learning, McGraw-Hill.
  2. Bishop, C. M. (2011). Pattern recognition and machine learning. Springer.
  3. Alpaydin, E. (2016). Machine learning: the new AI. MIT press.
  4. Shalev-Shwartz, S., Ben-David, S. (2014). Understanding machine learning: From theory to algorithms. Cambridge university press.
  5. Hastie, T., Tibshirani, R., Friedman, J. (2016). The elements of statistical learning: data mining, inference, and prediction. 2nd Springer Series in Statistics.
  6. Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep learning. MIT press.
  7. Géron, A. (2017). Hands-on machine learning with Scikit-Learn and TensorFlow: concepts, tools, and techniques to build intelligent systems. O'Reilly Media, Inc..
COSC 44232 - Advanced Computer Architecture and Operating Systems

Course Code

: COSC 44232

Title

: Advanced Computer Architecture and Operating Systems

Pre-Requisites

: COSC 22073

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • discuss how modern computer systems are designed, including details about pipeline, memory organization, virtual and physical memory, and memory technology
  • explain how to use instruction-level parallelism, memory-level parallelism, and thread-level parallelism
  • compare design of multiprocessor systems of combination of SIMD and MIMD structures, especially with graphic processors and other types of accelerating devices, including programming them
  • define, explain, and apply operating systems concepts
  • demonstrate experience in implementing and debugging operating system components, including the kernel module, system call, synchronization primitives, and the file system.

Course Content:

Computer Architecture: Combinational and sequential circuits, architectural design constraints; Instruction Level Parallelism: ILP concepts, Compiler techniques for exposing ILP, Dynamic Branch prediction, Dynamic Scheduling, Multiple instruction issue, Hardware based speculation, Static Scheduling, Multi-threading; Data Level Parallelism: Vector architecture - SIMD extension, GPU, Loop level parallelism; Thread Level Parallelism: Symmetric and distributed shared memory architectures, Performance issues, Synchronization, Models of Memory consistency, SMT and CMP processors.

Operating Systems: review of OS, file systems, privileged modes and protection levels, notable computer architectures, current trends and future insights, OS Interface, Memory Management, I/O System, Protection and Security.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Hennessy, J. L., Patterson, D. A. (2011). Computer architecture: a quantitative approach. 5th Morgan Kaufmann.
  2. El-Rewini, H., Abd-El-Barr, M. (2005). Advanced computer architecture and parallel processing. 1st John Wiley & Sons.
  3. Fountain, T., Kacsuk, P. (1997). Advanced computer architectures: a design space approach. 1st Addison-Wesley.
  4. Anderson, T., Dahlin, M. (2014). Operating systems: principles and practice (Vol. 2). Recursive books.
  5. Tanenbaum, A. S., Woodhull, A. S. (2015). Operating systems: design and implementation. 3rd Pearson India.
  6. Stevens, W. R., Rago, S. A. (2013). Advanced Programming in the UNIX Environment. 3rd Edition. Addison-Wesley.
COSC 44243 - Parallel and Distributed Computing

Course Code

: COSC 44243

Title

Parallel and Distributed Computing

Pre-Requisites

: COSC 22073

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • develop and apply knowledge of parallel and distributed computing techniques and methodologies
  • apply design, development, and performance analysis of parallel and distributed applications
  • use the application of fundamental Computer Science methods and algorithms in the development of parallel applications
  • explain the design, testing, and performance analysis of a software system.

Course Content:

Introduction to Parallel and Distributed Computing; Parallel and Distributed Architectures; Socket programming; Parallel Performance; Shared Memory and Threads; Parallel Algorithms; OpenMP; Scalable Algorithms; Message Passing; MPI and Teragrid; Distributed Systems; MapReduce; Clusters; Distributed Coordination and Security; Distributed File Systems and Security.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Grama, A., Kumar, V., Gupta, A., Karypis, G. (2003). Introduction to parallel computing. 2nd Pearson Education.
  2. Tanenbaum, A. S., Van Steen, M. (2016). Distributed systems: principles and paradigms. 2nd CreateSpace Independent Publishing Platform.
  3. Quinn, M. J. (2004). Parallel Programming in C with MPI and OpenMP. McGraw Hill.
  4. Kirk, D. B., Wen-Mei, W. H. (2016). Programming massively parallel processors: a hands-on approach. Morgan Kaufmann.
COSC 44252 - Research Methodologies

Course Code

: COSC 44252

Title

: Research Methodologies

Pre-Requisites

: COSC 11012

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • demonstrate knowledge of qualitative and quantitative research methods
  • explain the ethical considerations in research projects
  • formulate a scientific problem and evaluate relevant information for a scientific problem
  • analyse results with appropriate statistical methods and present results in a scientific manner
  • demonstrate understanding of the opportunities and limitations of science and its role in society and the responsibility for how it is used.

Course Content:
Information gathering; Formulation of aims for a research project; Formulation of scientific problems and hypotheses; Selection of methods for solving a scientific problem; Qualitative and quantitative research methods; Statistical analysis; Research Ethics.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments

Assessment:
Final report/viva and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Oates, B. J. (2005). Researching information systems and computing. Sage.
  2. Zobel, J. (2015). Writing for computer science. 3rd Edition. Springer.
COSC 44263 - Theory of Computing

Course Code

: COSC 44263

Title

: Theory of Computing

Pre-Requisites

: COSC 11012

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • demonstrate the knowledge of advanced concepts of the theory of computing
  • distinguish computing models
  • simulate computing models.

Course Content:

Finite Automata: Deterministic and nondeterministic finite automata, Recursively Enumerable (RE) languages; Regular Expressions and Languages: Criteria for regular languages and expressions, pumping lemma, closure properties of regular languages; Context-Free Grammars and Languages: Context Free Grammars (CFGs), Context Free languages (CFLs), parse trees, and ambiguity in grammars and languages;

Pushdown Automata: Pushdown Automata (PDA) and Context-Free Languages (CFLs) and nondeterministic CFLs; Turing Machine (TM): Basic Turing machine, variations of TMs, restricted TMs, TMs and computers;

Undecidability: Codes for TMs, diagonalization language, recursive languages, complements of recursive languages and RE languages, universal language, reductions, post correspondence problem; Intractable Problems: Class P, NP and NP complete problems.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Sipser, M. (2007). Introduction to the Theory of Computation. 2nd Thomson Course Technology.
  2. Hopcroft, H. J., Motwani, R., Ullman, D. J. (2007). Introduction to Automata Theory Languages and Computation. 3rd Pearson Education.
  3. Sudkamp, A. T. (2005). Languages and Machines: An Introduction to the Theory of Computer Science. 3rd Pearson.
  4. Martin, C. J. (2014). Introduction to Languages and the Theory of Computation. 2007th Edition. McGraw Hill Education.
COSC 44273 - Logic Programming

Course Code

: COSC 44273

Title

: Logic Programming

Pre-Requisites

: COSC 32142

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • demonstrate a deeper understanding of the basic logical concepts
  • implement logic programs for real world problems using an appropriate language
  • explain the notion of formal proof, and construct simple proofs in a natural deduction proof system for predicate logic
  • explain how logic programming differs from other programming paradigms.

Course Content:
Propositional Logic: syntax and semantics, natural deduction proofs, decision procedures; Predicate Calculus: syntax and semantics, natural deduction proofs, undesirability and incompleteness; Logic Programming: Horn fragment of predicate logic, unification and top-down operational semantics, use of a logic programming language, Datalog and bottom up operational semantics; Reasoning about sequential programs: partial correctness assertions, computing weakest preconditions, loop invariants, reasoning about termination.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Huth, M., Ryan, M. (2004). Logic in Computer Science: Modelling and reasoning about systems. 2nd Cambridge university press.
  2. Sterling, L., Shapiro, E. (1994). The Art of Prolog: Advanced Programming Techniques. 2nd The MIT Press.
  3. Shinghal, R. (1992). Formal Concepts in Artificial Intelligence. 1st Chapman & Hall.
  4. Bramer, M. (2013). Logic programming with Prolog. 2nd Edition. Springer.
COSC 44283 - Theory of Compilers

Course Code

: COSC 44283

Title

: Theory of Compilers

Pre-Requisites

: COSC 22073

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • express the grammar of a programming language
  • develop lexical and syntax analyzers and use them in the construction of scanners and parsers
  • employ the operations of semantic analysis
  • develop a code generator
  • use different compiler optimization schemes in addition to efficient register allocation and garbage collection
  • design and program a complete working compiler for a given language.

Course Content:
Introduction to the structure of a compiler; Lexical Analysis: The role of the lexical analysis, input buffering, specification of tokens, recognition of tokens, finite automata; Syntax Analysis: Context –Free grammars, writing a grammar, top down parsing, bottom up parsing,  LR Parsers, parser generators; Syntax Directed Translations: Definitions, applications,  syntax directed translation schemes; Intermediate Code Generation: Variants of syntax trees, three-address code, types of declarations,  translation of expressions,  type checking, control flow, backpatching; Run Time Environments: Storage organization,  stack allocation space, heap management, garbage collection; Code Generation: Issues in the design of code generator, The target language, address in the target code, basic blocks and flow graphs, code generation Algorithm,   developing a simple compiler.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Cooper, K., Torczon, L. (2011). Engineering a compiler. 2nd Morgan Kaufmann.
  2. Aho, A. V., Lam, M.S., Sethi, R., Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools. 2nd Addison-Wesley.
  3. Grune, D., Van Reeuwijk, K., Bal, H. E., Jacobs, C. J., Langendoen, K. (2012). Modern compiler design. 2nd Edition. Springer
COSC 44293 - Wireless Communication and Networks

Course Code

: COSC 44293

Title

: Wireless Communication and Networks

Pre-Requisites

: COSC 12033

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • explain the concepts of wireless communication systems
  • discuss generations of mobile networks
  • assess different wireless networks and communication infrastructures
  • review basic cellular system, frequency reuse, channel assignment strategies, handoff strategies and interference
  • explain the multiple access technique for wireless communications
  • design a simple wireless communication network.

Course Content:
Introduction to wireless communication systems:  Evaluation of mobile radio communications, examples of wireless communication systems, paging systems, cordless telephone systems, compression of various wireless systems; Mobile wireless communication systems: second generation cellular networks, third generation wireless networks, wireless in local loop, wireless local area networks, Bluetooth and personal area networks; Cellular system design fundamentals: spectrum allocation, basic cellular system, frequency reuse, channel assignment strategies, handoff strategies, interference and system capacity, trucking and grade off service, improving coverage and capacity, cell splitting; Multiple access technique for wireless communications:  introduction to multiple accesses, FDMA, TDMA, spread spectrum multiple access, SDMA, packet radio, capacity of cellular systems; Wireless Networking: Difference between wireless and fixed telephone networks, development of wireless networks, fixed network transmission hierarchy, traffic routing in warless networks, wireless data services, common channel signaling, Wireless LAN technology and Standards, Bluetooth, GPRS and 3G wireless systems, Wireless WAN communication in the infrastructure.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments 

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Stallings, W. (2004). Wireless Communications and Networking. 2nd Prentice-Hall of India.
  2. Garg, V. (2010). Wireless communications & networking. Elsevier.
  3. Faludi, R. (2010). Building wireless sensor networks: with ZigBee, XBee, arduino, and processing. O'Reilly Media, Inc..
  4. Osseiran, A., Monserrat, J. F., Marsch, P. (Eds.). (2016). 5G mobile and wireless communications technology. Cambridge University Press.
COSC 44303 - Natural Language Processing

Course Code

: COSC 44303

Title

: Natural Language Processing

Pre-Requisites

: COSC 32142

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • describe characteristics of language and its use and understand their implications for Natural Language Processing (NLP) and NLP applications
  • explain a broad selection of NLP applications, and describe problems or tasks addressed, materials and methods used, how the applications are evaluated, and opportunities for future developments for each application
  • analyze basic NLP tools, and use them to analyze small text corpora
  • use benchmark corpora, commercial and open-source text analysis and visualization tools to explore interesting patterns.

Course Content:
NLP: Introduction, Human languages, models, ambiguity, processing paradigms; Phases in NLP; NLP applications; Text representation in computers, encoding schemes; Linguistics resources: Introduction to corpus, elements in balanced corpus, TreeBank, PropBank, WordNet, VerbNet etc, resource management with XML, management of linguistic data with the help of GATE, NLTK; Regular expressions; Finite State Automata; Word recognition; Lexicon; Morphology; Acquisition models; Finite State Transducer; N-grams; Smoothing; Entropy; Hidden Markov Models (HMM); Support Vector Machines (SVM); Conditional Random Fields (CRF); Part of Speech (POS) tagging: Stochastic POS tagging, transformation based tagging in TBL, handling of unknown words, named entities, multi word expressions; Introduction text analytics; Information Extraction; Machine Translation.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments 

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Jurafsky, D., Martin, J. H. (2009). Speech and Language Processing. 2nd Pearson Education.
  2. James, A. (1994). Natural language Understanding. 2nd Pearson Education.
  3. Weiss, S. M., Indurkhya, N., Zhang, T. (2010). Fundamentals of Predictive Text Mining. Springer: New York.
  4. Manning, C. D., Manning, C. D., Schütze, H. (1999). Foundations of statistical natural language processing. MIT press.
  5. Deng, L., Liu, Y. (Eds.). (2018). Deep Learning in Natural Language Processing. Springer.
COSC 44313 - Image Processing and Computer Vision

Course Code

: COSC 44313

Title

: Image Processing and Computer Vision

Pre-Requisites

: COSC 11023

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • demonstrate the steps for solving of image processing/vision problems
  • apply knowledge and understanding of pre-processing, segmentation, description, and recognition
  • choose appropriate methods and implement solutions to small-scale image processing and vision problems.

Course Content:
Overview of Applications of Image Processing and Vision; Digital Image Formats; Colour Models; Data Types; Operators; Manipulating Matrices; File I/O; The Image Processing Toolbox; Thresholding; Histogram Equalization; Linear Filtering (convolution); Noise Reduction; Nonlinear Filtering; Gradients; Edge Magnitude and Direction; Finite Difference Filters; Laplacian of Gaussian Filter; Canny Edge Detector; Colour Transformations; Colour Histogram Equalization; Colour Median Filtering; Colour Gradient and Edge Detection; Thresholding as a form of Segmentation; Basic Global Thresholding; Optimal Global Thresholding; Techniques to improve global thresholding; Region Labeling; Boundary Tracing; Edge Based Segmentation; Region-based Segmentation; Hybrid Methods; Boundary-based measures of accuracy; Region-based measures of accuracy; Measuring Reproducibility; Boundary Descriptors; Region and Shape Descriptors; Texture Description; SIFT Features and Bags of Words; Supervised and Unsupervised Clustering; Nearest Neighbor Classifiers; Bayesian Classification; Training and Testing Methodologies; Morphological Image Processing; Frequency Domain Filtering.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments 

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Davies, E. R. (2017). Computer vision: principles, algorithms, applications, learning. 5th Academic Press.
  2. Solem, J. E. (2012). Programming Computer Vision with Python: Tools and algorithms for analyzing images. O'Reilly Media, Inc..
  3. Hartley, R., Zisserman, A. (2003). Multiple view geometry in computer vision. Cambridge university press.
COSC 44323 - Emerging Technologies in Computer Science

Course Code

: COSC 44323

Title

: Emerging Technologies in Computer Science

Pre-Requisites

: All compulsory COSC course units of level 3

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • demonstrate the theoretical and practical knowledge on concepts learned on the selected emerging technologies.

Course Content:
Depends on the selected emerging technologies.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical 

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :
Reading list and material relevant for each selected topic to be provided at the beginning of the academic year by the lecturer.

COSC 44333 - Game Development

Course Code

: COSC 44333

Title

: Game Development

Pre-Requisites

: COSC 11023

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • express and practice basic game development (process: design, develop, test and present a beta version of a game of your own design)
  • use an Editor to create interesting game levels
  • create game scripts using appropriate languages and APIs
  • explain the fundamentals of using 2D and 3D graphics
  • express advanced topics such as shaders, physics, AI, and Network based games.

Course Content:
Introduction to game design and production; Production basics: Lighting, materials, effects, etc; Creating a simple game, working with 3D, games Rigidbody, physics, User input and UI, UI Development, Raycasting; 3D Characters: Animation & control, Intermediate Game Production, Event Systems & Delegates, Intermediate Game Production Topics, Data Structures, Global Illumination, 3D Models, Debugging, Introduction to Git, Beyond Game Design: Programming applications Algorithms & Trees.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical

Assessment:
End-of-course written examination, practical examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Fullerton, T. (2018). Game design workshop: a playcentric approach to creating innovative games. 4th AK Peters/CRC Press.
  2. Schell, J. (2014). The Art of Game Design: A book of lenses. 2nd AK Peters/CRC Press.
  3. Nystrom, R. (2014). Game programming patterns. Genever Benning.
  4. Hocking, J. (2018). Unity in action: Multiplatform game development in C#. 2nd Manning Publications.
  5. Bond, J. G. (2017). Introduction to game design, prototyping, and development: from concept to playable game with Unity and C#. 2nd Edition. Addison-Wesley Professional.
COSC 44343 - Data Science

Course Code

: COSC 44343

Title

: Data Science

Pre-Requisites

: COSC 32142

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • describe what is data science and the skill sets needed to be a data scientist
  • explain the basic concepts of statistical inference
  • identify probability distributions commonly used as foundations for statistical modeling
  • use an appropriate language to carry out basic statistical modeling and analysis
  • explain the significance of Exploratory Data Analysis (EDA) in data science
  • describe the data science process and how its components interact
  • use APIs and other tools to scrap the Web and collect data
  • apply basic machine learning algorithms for predictive modeling
  • identify common approaches used for feature generation
  • identify basic dimensionality reduction algorithms.

Course Content:
Data Wrangling: Static Files, SQL, Web Scraping, APIs and Messy Data; Statistical Inference: Event Space, Probability, Distributions and Hypothesis Testing; Summarizing and Visualizing Data: Descriptive Statistics, Univariate and Multivariate Exploratory Data Analysis; Predictive Modeling: Regression, Classification, Data Preprocessing, Model Evaluation and Ensembles; Data Mining: Dimensionality Reduction, Clustering, Association Rules, Anomaly Detection, Network Analysis and Recommender Systems; Specialty Topics: Data Engineering, Natural Language Processing, and Web Applications.

Method of Teaching and Learning:
Lectures, Tutorials and Assignments 

Assessment:
End-of-course written examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. O'Neil, C., Schutt, R. (2013). Doing data science: Straight talk from the frontline. O'Reilly Media, Inc..
  2. VanderPlas, J. (2016). Python data science handbook: essential tools for working with data. O'Reilly Media, Inc..
  3. Kelleher, J. D., Tierney, B. (2018). Data science. MIT Press.
  4. EMC Education Services (Ed.). (2015). Data Science and Big Data Analytics: Discovering, Analyzing, Visualizing and Presenting Data. John Wiley & Sons.
COSC 44353 - Cloud Computing

Course Code

: COSC 44353

Title

: Cloud Computing

Pre-Requisites

: COSC 12033

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • explain and use cloud computing environments
  • apply knowledge of standards in distributed computing, and the impact of standardisation on application programs
  • practice the deployment of cloud computing applications
  • explain the cloudlet architecture.

Course Content:
Fundamentals of Cloud Computing; Concepts and Models; Cloud-enabling Technology; Cloud Security; Cloud Infrastructure Mechanisms; Cloud Management; Cloud deployment; Cloud Computing Architecture; Cloudlet architecture; Parallel programming in the cloud; Virtualization; Distributed storage systems; Cost Metrics and Pricing; Service Quality Metrics and Software License Agreements.

Method of Teaching and Learning:
Lectures, Tutorials, Assignments and Practical

Assessment:
End-of-course written examination, practical examination and other assessments announced at the beginning of the course unit.

Recommended Reading :

  1. Erl, T., Puttini, R., Mahmood, Z. (2013). Cloud Computing: Concepts, Technology & Architecture. Prentice Hall
  2. Rosenberg, J., Mateos, A. (2010). The Cloud at Your Service: The When, How, and Why of Enterprise Cloud Computing. Manning Publications Co.
  3. Rafaels, R. J. (2018). Cloud Computing: From Beginning to End. 2nd Edition. CreateSpace Independent Publishing Platform.
COSC 44364 - Industrial Training

Course Code

: COSC 44364

Title

: Industrial Training

Pre-Requisites

: All compulsory COSC course units of level 1, 2 and 3

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • relate concepts learned in the class to computing project in the industry
  • use and apply the theory, knowledge, skills and values acquired through their first, second and third years in areas related to their interests and learning needs
  • identify the issues in applying concepts and acquire skills in resolving these issues in working environment
  • demonstrate a range of work skills required for the industry
  • employ a range of soft skills in the industry setting
  • identify the networks developed to advance their career opportunities.

Course Content:
Major aspects to be covered are the main phases of system development, generic skills needed to work in an industrialized environment and understanding of expectations of an organization.
 
Method of Teaching and Learning:
Training under the supervision and guidance of a suitable trainer in a computing industry.

Assessment:
Basd on  Presentations/ Viva, Diary, Report and Industry Evaluation

Recommended Reading :
Reading and reference material recommended by the relevant industry.

COSC 43378 - Research Project

Course Code

: COSC 43378

Title

: Research Project

Pre-Requisites

: All the compulsory COSC courses

Co-Requisites 

None

Learning Outcomes:
At the completion of this course student will be able to:
  • demonstrate the ability to research in an area of computer science
  • interpret and assess literature related to a current area of research
  • experiment with algorithms whose properties are not known in advance
  • demonstrate the ability to work and plan independently.

Course Content:
A study and/or an implementation of a computer system related to major sub disciplines of computer science domain under an assigned supervisor.

Method of Teaching and Learning:
A combination of self-study, seminars, presentations and a dissertation.

Assessment:
Based on Progress Reports / Presentations, Thesis and  Viva

Recommended Reading :
Reading list and material relevant for the selected research topic.

© 2019 Department of Statistics & Computer Science, Faculty of Science, University of Kelaniya, Sri Lanka. All Rights Reserved.