Course Structure Software engineering concepts and principles; design, development and testing of software systems. Introduction to software life cycle. Requirements, design and testing. Review of principles of object orientation. Object oriented analysis using UML. Frameworks and APIs. Introduction to the client-server architecture. Analysis, design and programming of a team-project including user interface considerations.
Course SEN 202 | Principles of Programming II | 200 Level | 2nd Semester
Course Structure Builds on SEN102 advanced concepts of object-oriented programming, language implementation models, and development with a suitable object-oriented language. Topics include input/output, networking, threading and GUI programming. Ample programming labs and projects form part of this course.
Course SEN 203 | Discrete Structures | 200 Level | 1st Semester
Course Structure This covers the mathematics needed for Computer Science. Topics covered include: functions, relations, propositional and first order predicate logic, set theory, proofs and their construction, counting and elementary probability
Course SEN 204 | Logic and Its Application in Computer Science | 200 Level | 2nd Semester
Course Structure Topics include: valid and invalid arguments; translating from English to the language of propositional and predicate logic; formal deduction and its role in proving the validity of an argument; logic and computer science – how to build circuits from logic gates and how to minimise circuits using propositional logic; introduction to Prolog–a Programming language based on logic; and, the applications of logic in computer science–AI, automated theorem-provers, expert systems, and so on. Prerequisite: CSC 213
Course SEN 205 | Software Requirements and Design | 200 Level | 1st Semester
Course Structure Definition of a software requirement, product and process requirements, functional and non–functional requirements, emergent properties, quantifiable requirements, and system and software requirements; Requirements process – process models and actors, process support and management, and process quality and improvement; Requirements elicitation – requirements sources and elicitation techniques
Course SEN 206 | Software Construction | 200 Level | 2nd Semester
Course Structure Topics include specifications, abstraction techniques including typing, access control, inheritance, polymorphism, genericity and design patterns, frameworks and architectures. Students will also learn the proper engineering use of techniques such as information hiding, classes, objects, inheritance, design by contract, exception handling, event-based systems, and concurrency. Special emphasis should be placed on suitable and appropriate object-oriented software development such as software quality and corresponding concepts, principles and best practices for addressing both functional and non-functional requirements of the software system in its architecture.
Course SEN 207 | Computer Architecture and Organisation | 200 Level | 1st Semester
Course Structure Differences between computer architecture and computer organisation, basic structure of computers; performance evaluation: metrics and calculations, performance equations, Amdahl's law; CPU organization and micro-architectural level design; Instruction set design; register transfer; RISC design principles; data-path design; controller design; memory system; addressing; microprogramming; computer arithmetic; survey of real computers and microprocessors; peripheral devices and input/output busses; and introduction to parallel computing. The course is a broad introduction to all aspects of computer systems organization and architecture and serves as the foundation for subsequent computer systems courses
Course SEN 208 | Design and Analysis of Algorithms | 200 Level | 2nd Semester
Course Structure Introduction to algorithms and its importance, mathematical foundations: growth functions, complexity analysis of algorithms, summations, recurrences, sorting algorithms. Algorithm design: divide-and-conquer approach, greedy approach. Graph algorithms: graph searching, topological sort, minimum spanning tree, shortest paths, backtracking and its applications in games. String matching. Dynamic programming and longest common subsequence. Theory of NP-completeness. Turing machines and the halting problem.
Course SEN 209 | Data Structures and Algorithms | 200 Level | 1st Semester
Course Structure This course covers Abstract Data Types (ADTs) and their support and implementations in object-oriented languages. Topics include recursion, complexity analysis, linear data structures (stacks, queues, priority queues, lists and strings), and non-linear data structures (hash tables, binary trees, search trees, balanced trees, heaps), searching and sorting algorithms and graph algorithms. This will also include substantial programming assignments and projects. Introduction to algorithm for parallel and distributed computing.
Course SEN 210 | Principle of Operating Systems | 200 Level | 2nd Semester
Course Structure Surveys methods and algorithms used in operating systems. Concurrent distributed operation is emphasized. The main topics covered are an introduction to operating systems, process management, process scheduling, inter-process communications, memory management techniques, virtual memory, I/O management, deadlock avoidance, file system design, socket programming, distributed operation; distributed data; performance evaluation, protection and security. Prerequisites.
Course SEN 212 | Software Engineering Process | 200 Level | 2nd Semester
Course Structure Software process definition – software process management and infrastructure, Software life cycles – categories of software processes, software life cycle models, software process adaptation, practical considerations; Software process assessment and improvement – software process assessment methods, software process improvement models, and continuous and staged software process rating; Software measurement – software process and product measurement, quality of measurement results, and software process measurement techniques; Software engineering process tools
Course SEN 214 | Analysis of Business Requirements | 200 Level | 2nd Semester
Course Structure This course will provide a solid foundation for a career in business analysis. This course explores the strategy, phases, components and process that a business analyst uses to develop a project. From conducting an enterprise analysis to assessing the solution's implementation, students will learn the basics of how to manage the process and determine the appropriate parties to be involved.
Course SEN 216 | Introduction to Critical Thinking | 200 Level | 2nd Semester
Course Structure Introduction: critical thinking, types of thinking, description of critical thinking, importance of critical thinking; Cognitive thinking: definition of Cognition, how brain works, evolution of human brain, left brain versus right brain, importance of cognition in critical thinking, limitation of cognition; Reasoning: description of reasoning, importance of reasoning in decision making, impact of reasoning in critical thinking, is reasoning always correct?, fallacious reasoning, good and bad reasoning, limitations of reasoning; Logical thinking: what is logic?, importance of thinking logically, inductive reasoning, deductive reasoning, impact of logics in critical thinking, Statements and arguments: what is a statement?, what is the argument?, understanding assumption, conclusion; Thinking hats model: introduction, white, red, black, yellow, blue and green hats, application of hats Tool; Cognitive bias, what is cognitive bias?, myths about cognitive bias, how does it impact critical thinking?, debiasing strategies; Parts of critical thinking, comprehension, identification, evaluation, inference, explanation, self-assessment; Practical application of critical thinking.