About
The course teaches students comprehensive and specialized subjects in computer
science; it develops skills in critical thinking and strategic planning for changing and
fast-paced environments, including technological and operational analysis; and in
general, it develops competences in leadership, including autonomous decision-
making, and communication with team members, stakeholders, and other members of
a business.
How students have found success through Woolf
Course Structure
About
The course helps students develop an appreciation for programming as a problem-solving tool. It teaches students how to think algorithmically and solve problems efficiently, and serves as the foundation for further computer science studies.
Using a project-based approach, students will learn to manipulate variables, expressions, and statements in Python, and understand functions, loops, and iterations. Students will then dive deep into data structures such as strings, files, lists, dictionaries, tuples, etc. to write complex programs. Over the course of the term, students will learn and apply basic data structures and algorithmic thinking. Finally, the course will explore the design and implementation of web apps in Python using the Flask framework.
Throughout the course, students will be exposed to abstraction and will learn a systematic way of constructing solutions to problems. They will work on team projects to practice pair programming, code reviews, and other collaboration methods common to the industry. The course culminates in a final group project and presentation during which students demonstrate and reflect on their learning.
All materials are inclucded.
Teachers
Intended learning outcomes
- Grasp fundamental programming concepts, including abstraction, objects, classes, and events, enabling them to effectively apply these principles in software development and problem-solving contexts.
- Cultivate strategic and creative responses to problems for which the solutions require a knowledge of data structures such as strings, files, lists, dictionaries, or tuples.
- Have an introductory knowledge of programming as a problem-solving tool, demonstrated by identifying the jobs to be done and implementing software solutions, such as web-based apps in Python using a Flask framework.
- Evaluates their own learning and identifies the learning deficits to address in further learning.
- Can select appropriate evidence and formulate code reviews to support the work of others.
- Ability to use abstraction and systematically construct solutions to problems.
- Communicate ideas in a well-structured, coherent format, following appropriate conventions pair programming and online code collaboration.
- Monitor and review their own performance and the performance of others; where appropriate collaboratively train others in the correct approach to programming.
- Possess the academic competences to undertake further studies in computer science with a degree of autonomy.
- Independently manage projects that require programming as a problem-solving tool, requiring the manipulation of variables, expressions, and statements.
- Display creativity and initiative in writing complex programs requiring application of a knowledge of basic data structures and algorithmic thinking.
About
This course teaches the fundamentals of data structures and introduces students to the
implementation and analysis of algorithms, a critical and highly valued skill for
professionals.
Students start by examining the basic linear data structures: linked lists, arrays, stacks,
and queues. They learn how to build these structures from scratch, represent
algorithms using pseudocode, and translate these into running programs. They apply
these algorithms to real-life applications to understand how to make complexity and
performance tradeoffs. Students will also learn how to develop algorithms for sorting
and searching, use iteration and recursion for repetition, and make tradeoffs between
the approaches. They will learn to estimate the efficiency of algorithms, and practice
writing and refining algorithms in a programming language.
This course emphasizes big-picture understanding and practical problem-solving in
preparation for technical interviews and professional practice. Throughout the course,
students will solve common practice problems, and participate in mock interview
sessions. As part of their regular assignments, they will also deepen their understanding
of these topics and practice technical communication by writing technical blog posts.
Teachers
Intended learning outcomes
- Demonstrate analytical thinking skills in the development of algorithms, focusing on sorting and searching. This includes applying analysis, synthesis, and evaluation to employ iteration and recursion effectively, and making informed trade-offs between these approaches based on the specific problem context
- Exhibit knowledge of analyzing algorithms, demonstrated by solving common algorithmic technical interview problems.
- Understanding of the principles and conventions necessary for the effective use of data structures in problem-solving
- Evaluates their own learning and identifies the learning deficits to address in further learning.
- Can select appropriate evidence when formulated responses to well-defined concrete and abstract problems of data structures, especially as relates to technical interview questions.
- Ability to apply theoretical and practical when estimating the efficiency of algorithms.
- Communicate ideas in a well-structured, coherent format, and practice writing and refining algorithms in a programming language.
- Independently manage projects that require techniques related to data structures where the correct use of analysis of algorithms is essential.
- Possess the academic competences to undertake further studies in data structures and algorithms with a degree of autonomy.
- Monitor and review their own performance and the performance of others; where appropriate collaboratively guide others in the correct approach to examining data structures
- Represent algorithms using pseudocode and translate these into running programs.
About
This module provides a foundation in building for the web. It helps students understand how the internet works, examines the role of the internet in their lives, and teaches them the basics of web development. The module prepares students for the advanced module in Web Application Development.
The module will cover the building blocks of web technologies. Students will learn HTML, intermediate CSS, and the basic concepts and use of JavaScript. The course covers a brief history of the internet and network technologies. Students will relate what they learn about the conceptual foundations of the web to their own experience of the web, recreating common design and interaction patterns seen across countless websites. The module will focus on collaboration, communication, and sharing. Web technology is fundamentally social; students will work together and build for real audiences.
The module culminates in a project in which students create a website using the tools they learned throughout the module.
Teachers


Intended learning outcomes
- Apply the rules and conventions for the proper use of sources that lead to demonstrated knowledge of the social and ethical issues relevant to the humanities.
- Describe the technical design and infrastructure of the internet
- Describe the history of the internet, and the role it plays in today’s society
- Monitor and assess their own performance as well as that of their peers; where suitable, collaboratively guide others in the proper methods for web project development, utilizing communication and sharing tools to improve project results
- Possess the academic competencies to undertake further studies in Web Application Development by laying a solid foundation of web development principles and practices.
- Build a basic website with HTML and CSS
- Communicate ideas in a well-structured format, following appropriate conventions.
- Apply theoretical and practical knowledge in the creation of solutions for problems related to web development.
- Analyze the challenges facing internet connectivity in a region of their choice
About
Front End Web Development builds on previous knowledge of web development, and extends students’ familiarity with modern HTML, CSS, JavaScript, and Web APIs. Students learn to develop and deploy client-side web applications with greater scope and complexity. Complex frontend features require using HTML, CSS, and JavaScript together. Students will usually have taken Web Application Development (or similar course under advisement from their faculty) as a prerequisite for this course.
Students deepen their knowledge of the JavaScript language, covering in depth topics like scope and higher order functions. Students practice using modern build tools for package management, bundling, optimization, formatting and linting, and testing. Throughout the course, students will solve practice exercises and build projects, culminating in a final project using a JavaScript framework to build a complex web application.
Students will continue to apply technical communication skills by writing technical specs, drafting architecture diagrams, and documenting APIs. They will extend their communication practice through technical blogging on topics like tool comparisons, architecture choices, benchmarks, and frontend web design. Students will grow in independence by reading documentation to learn about novel language and browser features.
Teachers


Intended learning outcomes
- Have knowledge of web development tools, demonstrated by writing technical specification documentation.
- Gain exposure to accessible web design, understanding the principles of how to create websites and apps that work well on mobile devices, and that support use of assistive technologies like screen readers.
- Demonstrate knowledge of the request-response structure, along with database management and JSON-based APIs.
- Cultivate strategic and creative responses in the search for solutions to well-defined concrete and abstract problems related to web development tools.
- Communicate ideas in a well-structured, coherent format, following appropriate conventions in the field of technology.
- Ability to solve front-end web application problems related to design requirements using HTML, CSS and JavaScript.
- Work independently to build a web application, trouble-shooting problems as they rise using self-directed research techniques. Ability to build and debug features in HTML, CSS, and JavaScript. Ability to measure, monitor, and improve performance of complex web applications.
- Evaluates their own learning and identifies the learning deficits to address in further learning.
- Monitor and review their own performance and the performance of others; where appropriate collaboratively train others in the correct approach to computer web application development.
- Use a modern JavaScript framework to build and deploy a complex web application.
- Independently manage projects that require techniques related to building web applications where the correct use of client and server-side development for the web is essential.
- Possess the academic competences to undertake further studies in web application development with a degree of autonomy.
About
This course builds upon the foundational concepts introduced in Programming 1,
aiming to deepen students' understanding of programming with a focus on data access and management, incorporating advanced programming paradigms.
Key programming concepts such as data types, operators, variables, and control flows are revisited, now with an added emphasis on advanced techniques like recursivity, object-oriented programming, and event-driven programming. These paradigms enhance students' ability to structure and manage complex data interactions efficiently. Students learn to use Regular Expressions, a powerful tool for finding and extracting data from string and other data types. They are introduced to modern web protocols, and learn how to retrieve data from web services using Python and JSON, and how to access and parse data in XML. Students learn the basics of working with databases and the relationships between databases. They learn how to write queries in SQL, the
foremost programming language for generating, manipulating, and retrieving
information from a relational database.
Teachers
Intended learning outcomes
- Cultivate strategic and creative responses in the search for solutions to well-defined concrete and abstract problems related to databases.
- Make judgments based on knowledge of the rules and conventions for the proper use of network planning, and demonstrate knowledge of the social and ethical issues relevant to programming.
- Have knowledge of Python, demonstrated by retrieving and visualizing original data in Python.
- Ability to apply theoretical and practical knowledge in the creation of solutions for problems related to programming.
- Write queries in SQL, demonstrating an ability to manipulate, and retrieve information from a relational database.
- Use Regular Expressions as a tool for finding and extracting data from string and other data types.
- Independently manage projects that require techniques related to Python where the correct use of data access and management is essential.
- Possess the academic competences to undertake further studies in computer science with a degree of autonomy.
- Display creativity and initiative in implementing solutions that correctly retrieve data from web services using Python and JSON, and demonstrate an ability to access and parse data in XML
- Monitor and review their own performance and the performance of others; where appropriate collaboratively train others in the correct approach to working with databases and the relationships between databases.
About
In today's interconnected world, where technology permeates every aspect of our lives, protecting our digital assets and information has become paramount. The Introduction to Cyber Security module is designed to provide students with a comprehensive understanding of the fundamental concepts, principles, and practices of cyber security.
Through a combination of theoretical knowledge and hands-on practical exercises, students will develop the necessary skills to identify and mitigate various cyber threats, protect sensitive data, and safeguard computer systems and networks.
By the end of this module, students will have a solid foundation in cyber security principles, enabling them to pursue further studies in specialized areas of cyber security.
Teachers
Intended learning outcomes
- Explore the different types of cyber threats, including malware, phishing, social engineering, and network attacks.
- Develop a foundational understanding of the core concepts and terminologies used in cyber security.
- Learn about the various security technologies and tools used in cyber defense, such as firewalls, intrusion detection systems, and encryption.
- Use incident response and disaster recovery techniques to effectively handle and mitigate cyber security incidents.
- Implement basic security measures to protect computer systems, networks, and web applications.
- Understand the principles of risk management and vulnerability assessment to identify potential security weaknesses.
- Articulate emerging trends and challenges in the field of cyber security, such as cloud security, mobile security, and IoT security.
- Analyse legal and ethical considerations surrounding cyber security, including privacy, intellectual property, and compliance.
About
Optimizing Your Learning aims to transform incoming first year students into effective and empowered self-directed learners. In the modern world, long-term academic, professional, and personal success is driven by the ability of individuals to take control of their learning. Therefore, this course helps students to develop the knowledge, skills, and mindsets necessary to take ownership of their learning and build their self-efficacy. During the course, students will develop competence in skills that are most critical for effective self-directed and self-regulated learning (i.e. self-management, self-monitoring, and self-modification), while also learning how to use learning strategies to maximize their overall learning efficiency and efficacy. They will also utilize the Emotional Intelligence framework to explore their identity, self-image, motivation, and self-regulation skills, to support their development as self-directed learners. The course culminates in the creation of a personal learning charter that will help guide students in their learning throughout their undergraduate studies, which can also be applied to their learning activities in other realms of their lives.
Teachers
Intended learning outcomes
- Cultivate strategic and creative responses in the search for solutions to well-defined concrete and abstract problems related to self-awareness.
- Make judgments based on knowledge of the rules and conventions for the proper use of self-awareness, and demonstrate knowledge of the social and ethical issues relevant to self-directed learning.
- Have knowledge of self-directed learning and study-patterns, demonstrated by creating a personal learning charter that will help guide students in their learning throughout their undergraduate studies .
- Can select appropriate evidence when formulated responses to well-defined concrete and abstract problems of personal career and education planning and success.
- Evaluates their own learning and identifies the learning deficits to address in further learning.
- Ability to apply theoretical and practical knowledge for the purpose of attaining long-term academic, professional, and personal success.
- Communicate ideas in a well-structured, coherent format, following appropriate conventions in the field of technology.
- Monitor and review their own performance and the performance of others; where appropriate collaboratively train others in the correct approach to develop a reflective practice to support deep learning.
- Display creativity and initiative in carrying out self-directed learning.
- Independently manage external perceptions that require techniques of self-reflection and self-evaluation.
- Possess the academic competences to undertake further studies in emotional competence with a degree of autonomy.
About
In this course, students practice the skills necessary to work effectively on a professional software product team. By working in small teams to build a web application, they integrate the technical, communication, and collaboration skills built in previous courses.
Students build a multi-feature web application, either for a fictional client or an original idea of their own design. As they work together, they learn modern technical collaboration tools and practices. Topics covered include using version control for shared repository management, writing technical design documents, and conducting code reviews. They also practice project management skills by implementing the SCRUM framework, including sprint planning, reviews, and retrospectives. During each milestone, team members rotate taking on various roles including Scrum master, product owner, and technical lead. Throughout the course, students will also apply and refine the emotional intelligence, team development, and leadership frameworks previously learned. By the end of the course, students should understand and value the various roles within a software product development team, and be able to participate effectively on a product team.
There are no scheduled class sessions. Teams will submit their sprint retrospectives for feedback from peers and faculty. The course culminates in a showcase where students present their final project to their peers and external stakeholders.
Teachers
Intended learning outcomes
- Have knowledge of modern technical collaboration tools, demonstrated by developing and deploying a web application in collaboration with a team.
- Cultivate strategic and creative responses in the search for solutions to well-defined concrete and abstract problems related to software.
- Make judgments based on knowledge of the rules and conventions for the proper use of technical collaboration tools, and demonstrate knowledge of the social and ethical issues relevant to technology.
- Practice project management skills by implementing the Scrum framework, including sprint planning, reviews, and retrospectives.
- Ability to apply theoretical and practical knowledge in the creation of solutions for problems related to software.
- Rotate through team roles, taking the position of Scrum master, product owner, and technical lead.
- Evaluates their own learning and identifies the learning deficits to address in further learning.
- Possess the academic competences to undertake further studies in software project development with a degree of autonomy.
- Display creativity and initiative in a collaborative software project.
- Understand and value the various roles within a software product development team, and be able to participate effectively on a product team.
- Use emotional intelligence and team development frameworks whilst monitoring and reviewing their own performance and the performance of others.
About
Industry Experience is a form of experiential learning that enables students to apply their academic knowledge in a professional context. Students work to build software that meets the needs of a professional organization by completing either (1) an
approved internship, or (2) a product studio.
During the online internship, students work on tasks that meet the needs of the
organization, guided by an on-site supervisor. Internships must entail significant,
substantial computer science. In the studio, external clients (e.g., businesses, non-
profits) sponsor a software development project completed by students. A typical end
result is a prototype of or a fully functional software system ready for use by the clients.
These projects are completed by teams of 4-6 students, who meet with the client
weekly to share progress and get feedback.
Students complete online modules under the supervision of a faculty advisor. Pre-work
includes instruction in communication, goal-setting, and professional development.
During the industry experience, students submit bi-weekly written reflections on their
personal goals, challenges, and, for the studio, team feedback. At the end of the term,
students obtain written feedback from their organization supervisor. They also submit
a final report which describes the problem statement, approaches/methods used,
deliverables, and skills gained. Industry Experience culminates in a final presentation
which is shared as a public blog post.
Teachers
Intended learning outcomes
- Utilize detailed theoretical and practical knowledge essential to industry experience.
- Make judgments based on knowledge of the rules and conventions for the proper use of communication and demonstrate knowledge of the social and ethical issues relevant to technology.
- Have industry-relevant knowledge that goes beyond advanced general education textbooks and is applicable to the field of technology.
- Understand a range of tools and techniques used in professional settings.
- Communicate academic knowledge and skills in a well-structured, coherent format, following appropriate conventions in the field of technology.
- Implement knowledge and understanding in a way that demonstrates professionalism in a field of technology.
- Translate business requirements that meet the needs of the organization into actionable software development tasks.
- Possess the academic competences to undertake further studies in professional development with a high degree of autonomy.
- Show creativity and initiative to develop projects with effective communication.
- Demonstrates administrative planning, resource management, and team management as well as handling unpredictable and complex issues in a professional setting.
About
This course provides a foundation in building for the web. It helps students understand how the internet works, examines the role of the internet in their lives, and teaches them the basics of web development. The course prepares students for the advanced course in Web Application Development.
The course begins with a brief history of the internet and network technologies. Students will learn about the physical underpinnings of the internet, barriers to connectivity, and efforts to expand access (e.g., undersea cable projects, satellite projects). They will also explore the challenges of internet security and privacy. Students will be encouraged to make these social explorations personal, and investigate the history, barriers, and opportunities for connectivity in their local regions. The course will also cover the building blocks of web application development. Students will learn fundamentals of HTML, intermediate CSS, and basic concepts and syntax of JavaScript.
The course culminates in a “Knowledge Share” project during which students create a website to educate a non-technical audience on a key aspect of the internet or emerging technology.
Teachers


Intended learning outcomes
- Display knowledge of how the internet works through the creation of websites to educate a non-technical audience.
- Cultivate strategic and creative responses in the search for solutions to well-defined concrete and abstract problems related to web development.
- Make judgments based on knowledge of the rules and conventions for the proper use of web applications and demonstrate knowledge of the social and ethical issues relevant to the role of the internet in modern day life.
- Ability to apply theoretical and practical knowledge in the creation of solutions for problems related to web development.
- Ability to use HTML, intermediate CSS, and basic concepts and syntax of JavaScript.
- Can select appropriate evidence when formulated responses to well-defined concrete and abstract problems related to web development.
- Evaluates their own learning and identifies the learning deficits to address in further learning.
- Communicate ideas in a well-structured, coherent format, following appropriate conventions in the field of web development.
- Independently manage a project involving the creation of a website to educate a non-technical audience on a key aspect of the internet or emerging technology.
- Possess the academic competences to undertake further studies in web development with a degree of autonomy.
- Display creativity and initiative in carrying out foundations in building for the web
- Monitor and review their own performance and the performance of others; where appropriate collaboratively train others in the correct approach to a key aspect of the internet or emerging technology
About
Data drives more and more software, from social networks to self-driving cars. In order
to build applications using that data, engineers design systems to get the data from
where it's collected to where it's analyzed and consumed.
This module bridges what students learn in the Databases and Data Science modules,
connecting the theory of data science to the concrete how-to practice of handling data.
The course uses the fundamental constraints of processors, storage, and networks --
how fast can data be processed, how much can be stored, and how fast does it move --
as a frame for data engineering decision-making.
Students will design and build real data pipelines in this module. They'll use a range of
industry-standard tools and platforms, and learn to be savvy and scrappy in the tools
they choose. Students will learn to test their data pipelines in different ways, including
statistical tests, load tests, and monitoring.
Teachers
Intended learning outcomes
- 1. Explain the limitations and bottlenecks of different tools and components in a data pipeline
- 3. Apply the rules and conventions for the proper use of sources, that lead to demonstrated knowledge of the social and ethical issues relevant to data engineering.
- 2. Utilize strategic and creative responses in the search for solutions to well-defined concrete and abstract problems related to data engineering.
- Build a data system that aggregates data from different sources for regular analysis
- Design and implement a data pipeline
- Possess the academic competencies to undertake further studies in data engineering with a degree of autonomy.
- Monitor and review their own performance and the performance of others; where appropriate, collaboratively train others in the correct approach to data engineering
- 3. Select appropriate evidence when formulating responses to well-defined concrete and abstract problems related to data engineering.
- 2. Communicate ideas in a well-structured format, following appropriate conventions.
- 1. Recognize and analyze data sources
About
This course provides students with the tools and techniques to secure systems across diverse computing environments, from on-premise servers to cloud platforms. Students begin by mastering advanced Linux administration skills, including piping, redirection, and system scripting. They then examine common threats to enterprise infrastructure, such as Active Directory exploits, and explore mitigation strategies grounded in security best practices.
The course expands into cloud computing, where students evaluate service models and deployment architectures through a security lens, focusing on access control, encryption, and configuration management. Emphasis is also placed on data privacy regulations, secure communication protocols, and regulatory compliance. The course concludes with hands-on system hardening projects in which students automate security enforcement and implement continuous monitoring for threat detection and system health.
Teachers
Intended learning outcomes
- Makes judgements on ethical and regulatory issues while designing and implementing secure, compliant systems.
- Understands tools, protocols, and frameworks for compliance with data privacy regulations and secure communication practices.
- Uses detailed theoretical and practical knowledge of security controls, encryption methods, and configuration management to secure diverse systems.
- Understands advanced concepts of system administration, enterprise security threats, and mitigation strategies across on-premise and cloud environments.
- Communicates vulnerabilities, risks, and mitigation strategies effectively to both technical teams and non-technical stakeholders.
- Identifies, mitigates, and monitors threats in enterprise environments, including Active Directory and cloud platforms.
- Consistently evaluates system health, refining configurations and tools to maintain an optimal security posture.
- Designs and sustains security solutions by integrating best practices in access control, encryption, and continuous monitoring.
- Applies advanced Linux administration and scripting techniques to automate system management and security enforcement.
- Apply system hardening techniques across operating systems to reduce the attack surface.
- Execute advanced Linux commands to automate system management and enforce security controls.
- Monitor and maintain system health and security posture using logs, scripts, and baseline configurations.
- Identify and mitigate common vulnerabilities in enterprise systems, including Active Directory environments.
- Interpret and apply data privacy regulations to real-world system security scenarios.
- Secure cloud-based resources using best practices in identity management, encryption, and configuration.
About
Engineering for Development, Challenge Studio 1, and Challenge Studio 2 are 3 courses that help students investigate the role that technology can play in solving some of the world’s most intractable social and economic development challenges.
Challenge Studio 2 builds on the final output from Challenge Studio 1, and supports students in creating a sustainable business model for the MVP that they developed in the previous course. This course is focused on putting the MVPs in the hands of real users, getting their feedback, and iterating and refining the product or service, while also developing a viable business model.
The course will utilize virtual studio time, where groups are able to work collaboratively on their MVPs, with the support of additional lectures, seminars, and learning resources on important topics such as product launch planning, user evaluation tools and frameworks, business canvas development, funding models, financial modelling and strategy, and pitching.
The course will culminate in a pitch showcase, where students are required to present their work to relevant stakeholders (e.g. industry leaders).
Teachers
Intended learning outcomes
- core strategies of problem formulation; user research; and build, measure, learn cycles – evaluating user feedback on a Minimum Viable Product and adjusting the business model.
- the rules and conventions of problem identification, product management, and sprint management.
- human centered design principles, end user identification strategies; best practices for requirements gathering and impact measurement.
- ability to apply theoretical and practical knowledge to the decomposition of problems into actionable tasks
- select appropriate evidence and technologies when formulating responses to well-defined concrete and abstract problems in the domain of Human Centered Design and End User requirements.
- communicate ideas in a well-structured, coherent format, following appropriate conventions.
- consistently evaluates own learning and identifies learning needs.
- Possess the academic competences to undertake further collaborative projects leading to an MVP or prototype that increasingly and iteratively solves a user problems.
- work as a team to develop a sustainable business model for a Minimum Viable that provides a practical solution for an identified problem.
- organise and execute upon a detailed project plan that employs progress tracking methods using appropriate metrics and tools.
About
Industry Experience 2 provides a form of experiential learning that enables students to apply their academic knowledge in a professional context. Students work to build software that meets the needs of a professional organization by completing either (1) an approved internship, or (2) a product studio.
During the online internship, students work on tasks that meet the needs of the organization, guided by an on-site supervisor. Internships must entail significant, substantial computer science. In the studio, external clients (e.g., businesses, non-profits) sponsor a software development project completed by students. A typical end result is a prototype of or a fully functional software system ready for an end user. These projects are completed by teams of 4-6 students, who meet with the clients or other end users weekly to share progress and get feedback.
Students complete online modules under the supervision of a faculty advisor. Pre-work includes instruction in communication, goal-setting, and professional development. During the industry experience, students submit bi-weekly written reflections on their personal goals, challenges, and, for the studio, team feedback. At the end of the term, students obtain written feedback from their organization supervisor. They also submit a final report which describes the problem statement, approaches/methods used, deliverables, and skills gained. Industry Experience culminates in a final presentation which is shared as a public blog post.
Teachers
Intended learning outcomes
- Make judgments based on knowledge of the rules and conventions for the proper use of communication and demonstrate knowledge of the social and ethical issues relevant to technology.
- Understand a range of tools and techniques used in professional settings.
- Utilize detailed theoretical and practical knowledge essential to industry experience.
- Have industry-relevant knowledge that goes beyond advanced general education textbooks and is applicable to the field of technology.
- Consistently evaluates own learning and identifies learning needs.
- Devises and sustains arguments to solve problems related to professional settings.
- Have the ability to gather academic knowledge and skills in order to make informed judgments that reflect on relevant social, scientific, and ethical issues.
- Implement knowledge and understanding in a way that demonstrates professionalism in a field of technology.
- Communicate academic knowledge and skills in a well-structured, coherent format, following appropriate conventions in the field of technology.
- Demonstrates administrative planning, resource management, and team management as well as handling unpredictable and complex issues in a professional setting.
- Show creativity and initiative to develop projects with effective communication.
- Possess the academic competences to undertake further studies in professional development with a high degree of autonomy.
About
This course introduces students to the principles of secure system and network architecture, equipping them with the tools to identify structural vulnerabilities and design resilient infrastructure. Students explore foundational security frameworks and architectural models, including layered defense, network segmentation, and cloud-native security patterns.
Through case studies and hands-on exercises, students assess architectural weaknesses and evaluate how insecure design contributes to real-world breaches. Key topics include vulnerability management, secure IT architecture, cloud environment hardening, and zero trust principles. The course culminates in a project where students evaluate an enterprise architecture and propose security enhancements aligned with best practices.
Teachers
Intended learning outcomes
- Makes judgements on ethical, operational, and compliance considerations when designing and recommending secure system architectures.
- Understands principles of secure system and network architecture, including layered defense, segmentation, and cloud-native security patterns.
- Uses detailed theoretical and practical knowledge of security frameworks to identify vulnerabilities and mitigate risks in diverse IT environments.
- Understands tools and processes for vulnerability management and architectural evaluation across traditional, cloud, and hybrid infrastructures.
- Applies secure design principles to analyze and strengthen IT infrastructure, reducing exposure to threats and breaches.
- Communicates architectural risks and security strategies clearly to both technical teams and executive stakeholders.
- Evaluates the effectiveness of network segmentation, isolation strategies, and zero trust principles in securing systems.
- Consistently monitors and updates architectural strategies to adapt to evolving technologies and threats.
- Devises and sustains arguments for architectural improvements based on vulnerability assessments and industry best practices.
- Assess IT infrastructure for architectural vulnerabilities using industry-standard frameworks.
- Evaluate the effectiveness of network segmentation and isolation strategies.
- Integrate zero trust security principles into architectural recommendations.
- Complete a final project analyzing and strengthening the security posture of a complex IT environment.
- Analyze and interpret vulnerability assessments within the context of system architecture.
- Apply principles of secure design to mitigate risk in traditional, cloud, and hybrid environments.
About
This course introduces students to the field of Cyber Threat Intelligence (CTI) and its role in shaping organizational defense strategies. Students explore the evolving threat landscape, learning how to collect, evaluate, and apply threat intelligence using industry-standard models such as MITRE ATTACK.
Emphasis is placed on using threat intelligence to inform incident response, detect adversary behavior, and enhance system resilience. Students also examine the role of Governance, Risk, and Compliance (GRC) frameworks in operationalizing security strategy, ensuring regulatory alignment, and driving risk-based decision-making. The course culminates in an applied project where students analyze SIEM data and construct a strategic response plan integrating CTI and GRC principles.
Teachers
Intended learning outcomes
- Makes judgements on ethical, legal, and regulatory issues while designing intelligence-based response strategies.
- Understands the lifecycle of cyber threat intelligence and its role in strengthening organizational security and defense strategies.
- Uses detailed theoretical and practical knowledge of frameworks like MITRE ATT&CK to analyze adversary behavior and predict threats.
- Understands tools and processes such as SIEM systems and GRC frameworks for monitoring, compliance, and intelligence-driven security operations.
- Applies CTI methodologies to collect, analyze, and operationalize threat intelligence for proactive defense.
- Consistently evaluates and refines threat intelligence processes to improve organizational resilience and response readiness.
- Integrates GRC principles into detection, response, and reporting workflows to ensure compliance and risk-based decision-making.
- Communicates complex intelligence findings and risk assessments effectively to technical and executive stakeholders.
- Evaluates SIEM data to identify, investigate, and respond to cybersecurity incidents.
- Explain the role and lifecycle of cyber threat intelligence in organizational security.
- Outline a response to a cybersecurity event using intelligence-driven methods.
- Develop a strategic threat response plan that incorporates CTI tools, models, and compliance considerations.
- Evaluate security incidents using SIEM data to derive actionable intelligence.
- Integrate GRC principles into threat detection, response, and reporting workflows.
- Apply the MITRE ATT&CK framework to analyze adversarial behavior and inform defense strategies.
About
This course prepares students to work with large-scale data in modern, cloud-based environments, integrating advanced data processing techniques with visualization and generative AI tools. Students learn to use PySpark to efficiently manipulate structured and semi-structured datasets across distributed computing platforms, combining Python, SQL, and Spark in cohesive data workflows. Students explore foundational libraries such as NumPy and Pandas for data wrangling and analysis, while also creating compelling visual narratives through Seaborn and other visualization tools. Emphasis is placed on the role of dashboards in communicating data insights, and students are introduced to generative AI techniques that enhance exploratory analysis and automation. The course culminates in a final project that brings together cloud-scale data pipelines, exploratory analysis, and interactive dashboards to communicate actionable insights.
Teachers
Intended learning outcomes
- Makes judgements on data privacy, ethical AI practices, and responsible visualization when handling cloud-based datasets and automated analytical workflows.
- Understands methods and tools such as PySpark, NumPy, Pandas, and dashboarding platforms to create scalable, innovative solutions for real-world data problems.
- Understands advanced concepts of cloud-scale data processing, integrating Python, SQL, and Spark to manage structured and semi-structured datasets across distributed environments.
- Uses detailed theoretical and practical knowledge of data wrangling, exploratory analysis, visualization, and generative AI techniques to design efficient data workflows.
- Gathers, integrates, and interprets multi-table relational datasets to inform decisions while reflecting on social, scientific, and ethical implications of generative AI.
- Devises and sustains arguments to solve real-world business or research problems through data-driven storytelling and innovative AI-driven workflows.
- Consistently evaluates personal proficiency in cloud technologies and visualization tools, identifying emerging skills needed to advance in the field of data analytics.
- Communicates complex analytical insights through interactive dashboards and visual narratives tailored for both technical and non-technical audiences.
- Applies cloud-based data engineering and analysis techniques using PySpark, SQL, and Python libraries to address large-scale data challenges with a professional approach.
- Create interactive dashboards and visualizations using industry-standard tools and libraries.
- Complete a project that combines cloud-based processing, EDA, and data storytelling through dashboards.
- Apply generative AI techniques to enhance analytical workflows and surface key insights.
- Conduct exploratory data analysis (EDA) on multi-table datasets and model relational data.
- Integrate SQL and Python tools (NumPy, Pandas) to build data pipelines across cloud environments.
- Use PySpark to process and analyze large-scale structured and semi-structured datasets.
About
Engineering for Development, Challenge Studio 1, and Challenge Studio 2 are courses that help students investigate the role that technology can play in solving some of the world’s most intractable social and economic development challenges.
In Engineering for Development, students will learn how to analyze the root causes of development challenges so that they are able to build effective technology solutions. The course aims to introduce students to selected global development challenges using the United Nations Sustainable Development Goals (SDGs) as the framework for selecting the areas of focus.
Each term, the course will focus on 1- 2 subject areas (e.g. Quality Education, Affordable and Clean Energy, Climate Action), which will serve as test cases for students to develop the skills required to effectively analyze and understand complex development issues. Students will examine the system level dynamics that are at the root of these challenges, and will also analyze and critique technology related solutions that have been developed to address these challenges.
Teachers
Intended learning outcomes
- Understand a range of tools and techniques used in engineering for development.
- key strategies for decomposing problems into actionable engineering solutions.
- Make judgments based on knowledge of the rules and conventions for the proper use of engineering for collaboratively solving a problem.
- Utilize detailed theoretical and practical knowledge essential to engineering for development.
- Communicate engineering solutions to a problem in a well-structured, coherent format, following appropriate conventions for technical documentation.
- Consistently evaluates own learning and identifies learning needs.
- Implement knowledge and understanding in a way that demonstrates professionalism.
- Devise and actionable plans for solving a complex but scoped problem. s
- Analyze the root causes of development challenges, formulating and executing upon effective technology solutions.
- Possess the academic competences to undertake further studies in engineering with a high degree of autonomy.
- Demonstrates administrative planning, resource management, and team management as well as handling unpredictable and complex issues relating to solving practical problems with software engineering.
About
Engineering for Development, Challenge Studio 1, and Challenge Studio 2 are 3 courses that help students investigate the role that technology can play in solving some of the world’s most intractable social and economic development challenges.
In Challenge Studio 1, students will work in groups to design, develop, and test a solution to a development challenge of their choice. The focus of this course is to provide students with the tools and skills to create meaningful technology solutions (e.g. services, products) to a sustainable development problem. This course builds on the problem identification and analysis skills that were developed in Engineering for Impact, the product management skills that were developed in Product Management and Design, and the ethical engineering skills developed in Ethics in Tech.
At the end of Challenge Studio 1 students will submit a Minimum Viable Product (MVP) that is ready to go to market as their final project deliverable.
The course will utilize virtual studio time, where groups work together on the key incremental tasks that are required to allow them to successfully create their final project output. Studio time will be supported by lectures, seminars, and learning resources on useful skills such as human centered design, end user identification, requirements gathering, value creation, impact measurement, and creative thinking and innovation.
Teachers
Intended learning outcomes
- Human centered design principles, end user identification strategies; best practices for requirements gathering and impact measurement.
- The rules and conventions of problem identification, product management, and sprint management.
- Core strategies of problem formulation; user research; and build, measure, learn cycles - demonstrated by submitting a Minimum Viable Product (MVP) that provides a solution to a defined problem.
- Communicate ideas in a well-structured, coherent format, following appropriate conventions.
- Ability to apply theoretical and practical knowledge to the decomposition of problems into actionable tasks
- Consistently evaluates own learning and identifies learning needs.
- Select appropriate evidence and technologies when formulating responses to well-defined concrete and abstract problems in the domain of Human Centered Design and End User requirements.
- Work as a team to develop a Minimum Viable Product or prototype that provides a practical solution for an identified problem.
- Possess the academic competences to undertake further collaborative projects leading to an MVP or prototype when solving a well-defined user problem.
- Organise and execute upon a detailed project plan that employs progress tracking methods using appropriate metrics and tools.
About
This course builds on Data Structures & Algorithms 1. Students will explore non-linear data structures, and implement and analyze advanced algorithms.
The course begins with a brief review of basic data structures and algorithms. Students deepen their understanding of searching and sorting, with a focus on describing performance. They learn about advanced data structures including priority queues, hash tables and binary search trees. Students build on their knowledge of graph theory to implement graph algorithms, and explore topics like finding the shortest paths in graphs, and applications of algorithms in maps, social networks, and a host of real-life applications. Other key topics include: divide and conquer recursion, greedy algorithms, dynamic programming algorithms, NP completeness, and case studies in algorithm design.
The course emphasizes big-picture understanding and practical problem-solving in preparation for technical interviews and professional practice. Students will solve common algorithmic problems and participate in mock interview sessions. As part of their regular assignments, they will write technical blog posts to deepen their understanding of these topics and to practice technical communication.
Teachers
Intended learning outcomes
- data structures, demonstrated by solving common algorithmic problems and participating in mock interview sessions.
- knowledge of the rules and conventions advanced data structures, including priority queues, hash tables and binary search trees.
- typical use of algorithms for mapping problems, social networks, and other popular applications.
- divide and conquer recursion, greedy algorithms, dynamic programming algorithms, NP completeness, and case studies in algorithm design.
- devises and sustains arguments to solve mathematical problems relevant to data structures and algorithms.
- Implement graph algorithms, demonstrating both theoretical and practical sophistication.
- communicate about advanced data structures and algorithms in a well-structured, coherent format, following appropriate conventions in the field of technology.
- solve common algorithmic problems typically found in technical interview sessions.
- show creativity and initiative in exploring non-linear data structures and formulating advanced algorithms.
- Possess the academic competences to undertake further studies in data structures and algorithms with a high degree of autonomy.
- implement graph algorithms, building on a knowledge of graph theory.
About
Network and Computer Security teaches students the principles and practices of security for software, systems, and networks. It aims to make students critical examiners and designers of secure systems. Students will learn the mathematical and theoretical underpinning of security systems, as well as practical skills to help them build, use, and manage secure systems.
The first part of the course is focused on applied cryptography. Students learn general cryptographic protocols and investigate real-world algorithms. The second part of the course covers software and system security, including access controls, trends in malicious code, and how to detect system vulnerabilities. There is a special focus on web security, and modern practices for building secure web architectures. The final section of the course focuses on network security and covers concepts of networking, threats, and intrusion protection.
Course projects will require students to think both as an attacker and as a defender, and write programs that examine security design. Students will also examine recent security and privacy breaches. Working in pairs, they’ll conduct an in-depth investigation, and give a presentation to help classmates understand its technical underpinnings and social implications.
Teachers
Intended learning outcomes
- Network and computer security strategies, demonstrated by preparing both attacker and defender computer programmes.
- Understand a range of tools and techniques used in computer security.
- Utilize detailed theoretical and practical knowledge essential to network and computer security, demonstrating a knowledge of software and system security, including access controls, trends in malicious code, and how to detect system vulnerabilities.
- Modern practices for building secure web architectures.
- Evaluate recent security and privacy breaches, diagnosing the core system vulnerabilities.
- Think both as an attacker and as a defender, and write programs that examine security design.
- Communicate security principles in a well-structured, coherent format, following appropriate conventions.
- Demonstrates administrative planning, resource management, and team management as well as handling unpredictable and complex issues relating to network and computer security.
- Possess the academic competences to undertake further studies in network and computer security with a high degree of autonomy.
- Show creativity and initiative to read and analyze a variety of cryptographic algorithms and protocols.
About
Data science is applicable to a myriad of professions, and analyzing large amounts of data is a common application of computer science. This course empowers students to analyze data, and produce data-driven insights. It covers all areas needed to solve problems involving data, including preparation (collection and integration), presentation (information visualization), analysis (machine learning), and products (applications).
This course is a hybrid of a computing course focused on Python programming and algorithms, and a statistics course focusing on estimation and inference. It begins with acquiring and cleaning data from various sources including the web, APIs, and databases. Students then learn techniques for summarizing and exploring data with spreadsheets, SQL, R, and Python. They also learn to create data visualizations, and practice communication and storytelling with data. Finally, students are introduced to machine learning techniques of prediction and classification, which will prepare them for advanced study of data science.
Throughout the course, students will work with real datasets (e.g., economic data) and attempt to answer questions relevant to their lives. They will also probe the ethical questions surrounding privacy, data sharing, and algorithmic decision making. The course culminates in a project where students build and share a data application to answer a real-world question.
Teachers
Intended learning outcomes
- Techniques for summarizing and exploring data with spreadsheets, SQL, R, and Python.
- Theoretical and practical techniques for data collection and management, including acquiring and cleaning data from the web, APIs, and databases.
- Ability to work with real datasets to answer questions set in the module.
- Have a knowledge of key strategies for interpreting data to make informed predictions about possible outcomes.
- Make judgments based on knowledge of the rules and conventions for the proper use of advanced data sets and demonstrate knowledge of the social and ethical issues relevant to technology.
- Communicate insights on the basis of data sets in a well-structured, coherent format.
- Create data visualizations, and practice communication and storytelling with data.
- Consistently evaluates own learning and identifies learning needs.
- Communicate effectively about ethical issues surrounding data privacy, data sharing, and algorithmic decision making.
- Possess the academic competences to undertake further studies in data science with a high degree of autonomy.
- Show creativity and initiative while working with real datasets (e.g., economic data) and providing valuable answers.
- solve problems involving data, including preparation, presentation, analysis, and products.
About
This capstone course enables students to demonstrate their proficiency in the technical and human skills that they have acquired throughout their undergraduate studies. The capstone requires students to conceptualise, plan, and implement a software project to completion, and evaluate their project’s processes and outcomes.
The capstone builds on the initial project scoping work that was carried out in Capstone Research Methods, which culminated in students submitting a project proposal, and gaining formal approval for their capstone Project Proposal.
In this course, students will implement their proposed project with the support of a supervisor. Students with a common supervisor will be put into capstone advisory peer groups and will be required to meet with their group and supervisor regularly to update each other on their capstone progress and to provide feedback. Students will also have regular meetings with their capstone supervisor to provide additional support and guidance throughout the module.
Upon completion of their capstone projects, all students will be required to participate in a capstone symposium at the end of the term, where they will present their working projects/prototypes to internal and external stakeholders.
Teachers
Intended learning outcomes
- Make judgments based on knowledge of the rules and conventions for the proper use of capstone projects and demonstrate knowledge of the social and ethical issues relevant to technology.
- Utilize detailed theoretical and practical knowledge essential to capstone projects.
- Understand a range of tools and techniques used in completing capstone projects.
- Project management techniques required to plan, build, and present a software development project, demonstrated by the presentation of the final working project to internal and external stakeholders.
- Devises and sustains arguments to solve problems related to the chosen topic of the capstone project, using effective and extensive evidence.
- Implement knowledge and understanding in a way that demonstrates professionalism in capstone projects.
- Have the ability to gather qualitative and quantitative data in order to make informed judgments that reflect on relevant social, scientific, and ethical issues.
- Consistently evaluates own learning and identifies learning needs.
- Communicate capstone projects in a well-structured, coherent format, following appropriate conventions in the field of technology.
- Demonstrates administrative planning, resource management, and team management as well as handling unpredictable and complex issues in a capstone project.
- Possess the academic competences to undertake further research studies with a high degree of autonomy.
- Show creativity and initiative to develop projects with effective research skills.
About
This module will prepare students to apply and interview for internships and full-time positions in the software engineering industry.
Students will refine their personal brand, and craft effective resumes, LinkedIn profiles and portfolios. They will learn to communicate effectively in behavioral interviews, including how to conduct company and role research, and how to succinctly answer questions and share their background. They will learn to prepare for technical interviews. Key skills include the ability to walk an interviewer through one’s thought process, craft code on a whiteboard or document, and identify opportunities for improvement in one’s work. Finally, students will learn to prepare to onboard to development job, and understand how to effectively navigate large codebases and organizations to make valuable contributions.
The module emphasizes learning by doing, and the majority of assessments will be in the form of feedback received from practice interviews with industry professionals.
Teachers
Intended learning outcomes
- Understand theories and best practices related to interview strategies that build upon advanced general education, though at a level still supported by advanced applications.
- Apply the rules and conventions for the proper use of sources, that lead to demonstrated knowledge of the social and ethical issues relevant to working in the tech industry.
- Utilize strategic and creative responses in the search for solutions to well-defined concrete and abstract problems related to developing a personal brand.
- Craft effective professional presence, including resumes, portfolios and online websites.
- Reflect on their personal skills, and identify opportunities for further development.
- Independently manage projects that require techniques related to finding a job where the correct use of technology is essential.
- Display creativity and initiative in carrying out the utilisation of bset practices.
- Communicate ideas in a well-structured format, following appropriate conventions.
- Apply theoretical and practical knowledge in the creation of solutions for problems related to applying for jobs.
- Develop interviewing skills that enable them to make an effective case for technical roles.
About
This course introduces students to foundational and applied techniques in natural language processing (NLP), time series forecasting, and neural network modeling. Students begin by exploring core NLP tasks such as text classification, vectorization, and tokenization, using real-world datasets to extract meaning from language-based data.
The course then turns to time series analysis, where students learn to manage temporal data, visualize trends, and build predictive models using established statistical and deep learning techniques. Finally, students gain hands-on experience with basic neural network architecture and implementation using the Keras framework, applying these models to language, time, and image data. The course culminates in a project where students design and evaluate three models, demonstrating technical fluency across diverse data domains.
Teachers
Intended learning outcomes
- Understands foundational concepts of natural language processing, time series forecasting, and neural network modeling.
- Makes judgements on ethical considerations like bias, privacy, and responsible AI use when working with language and temporal datasets.
- Understands tools and frameworks such as Keras for implementing neural networks across text, time, and image data domains.
- Uses detailed theoretical and practical knowledge of statistical and deep learning techniques to analyze structured and unstructured data.
- Communicates insights derived from time series and deep learning models through clear visualizations and reports for technical and non-technical audiences.
- Devises and sustains integrated workflows combining NLP, time series analysis, and neural network modeling for diverse datasets.
- Designs, implements, and evaluates basic neural network architectures using Keras to address real-world problems.
- Consistently evaluates model performance and adapts methodologies to improve accuracy and relevance across multiple data types.
- Applies NLP techniques such as tokenization, vectorization, and text classification to solve language-based data problems.
- Manage and analyze time series data to detect trends and generate forecasts.
- Implement and train basic neural network architectures using Keras.
- Evaluate model performance across multiple data types, including text, time-based, and image data.
- Integrate statistical, mathematical, and programming methodologies to derive insights from structured and unstructured data.
- Apply natural language processing techniques to tasks such as text classification and vectorization.
- Design and deliver a multi-part final project that demonstrates applied modeling in NLP, time series, and neural networks.
About
The Capstone Research Methods course supports students in developing critical research skills that are needed for the successful completion of their capstone project (Applied Computer Science).
The course provides students with an overview of the research process and types of capstone projects that they can undertake, and includes a detailed exploration of relevant quantitative and qualitative research methods.
Students will develop skills in data gathering and analysis, researching and writing an effective literature review, creating a research proposal, and managing ethical considerations with regards intellectual property rights and research with human subjects.
At the conclusion of the course, students will be required to submit their formal capstone project proposal which should include details of their project scope, research question, hypothesis, and project plan. Their proposal must receive a passing mark before they are allowed to undertake the capstone course in the final term of the degree program.
Teachers
Intended learning outcomes
- Research planning strategies, demonstrated by the completion of a formal project proposal which should include details of the project scope, research question, hypothesis, and project plan.
- Understand and evaluate the range of potential tools and techniques used in research, including a detailed exploration of relevant quantitative and qualitative research methods to be used in the capstone.
- Utilize detailed theoretical and practical knowledge essential to research skills.
- Make judgments based on knowledge of the rules and conventions for the proper use of research proposals and demonstrate knowledge of the social and ethical issues relevant to technology.
- Have the ability to gather qualitative and quantitative data in order to make informed judgments that reflect on relevant social, scientific, and ethical issues.
- Implement knowledge and understanding in a way that demonstrates professionalism in research methods.
- Consistently evaluates own learning and identifies learning needs.
- Communicate research methods in a well-structured, coherent format, following appropriate conventions in the field of technology.
- undertake extended research, writing an effective literature review, and creating a research proposal.
- Show creativity and initiative to develop projects with effective research skills.
- Demonstrates administrative planning, resource management, and team management as well as handling unpredictable and complex issues in research skills.
- Possess the academic competences to plan a research project, evaluating the types of capstone projects that can be undertaken.
About
Industry Experience 2 provides a form of experiential learning that enables students to apply their academic knowledge in a professional context. Students work to build software that meets the needs of a professional organization by completing either (1) an approved internship, or (2) a product studio. During the online internship, students work on tasks that meet the needs of the organization, guided by an on-site supervisor. Internships must entail significant, substantial computer science. In the studio, external clients (e.g., businesses, non-profits) sponsor a software development project completed by students. A typical end result is a prototype of or a fully functional software system ready for an end user. These projects are completed by teams of 4-6 students, who meet with the clients or other end users weekly to share progress and get feedback. Students complete online modules under the supervision of a faculty advisor. Pre-work includes instruction in communication, goal-setting, and professional development. During the industry experience, students submit bi-weekly written reflections on their personal goals, challenges, and, for the studio, team feedback. At the end of the term, students obtain written feedback from their organization supervisor. They also submit a final report which describes the problem statement, approaches/methods used, deliverables, and skills gained. Industry Experience culminates in a final presentation which is shared as a public blog post.
Teachers
Intended learning outcomes
- Make judgments based on knowledge of the rules and conventions for the proper use of communication and demonstrate knowledge of the social and ethical issues relevant to technology.
- Understand a range of tools and techniques used in professional settings.
- Utilize detailed theoretical and practical knowledge essential to industry experience.
- Have industry-relevant knowledge that goes beyond advanced general education textbooks and is applicable to the field of technology.
- Have the ability to gather academic knowledge and skills in order to make informed judgments that reflect on relevant social, scientific, and ethical issues.
- Implement knowledge and understanding in a way that demonstrates professionalism in a field of technology.
- Consistently evaluates own learning and identifies learning needs.
- Communicate academic knowledge and skills in a well-structured, coherent format, following appropriate conventions in the field of technology.
- Devises and sustains arguments to solve problems related to professional settings.
- Show creativity and initiative to develop projects with effective communication.
- Possess the academic competences to undertake further studies in professional development with a high degree of autonomy.
- Demonstrates administrative planning, resource management, and team management as well as handling unpredictable and complex issues in a professional setting.
About
This course introduces students to the foundational concepts and techniques of machine learning, with a focus on supervised learning models and the data science workflow. Students begin by exploring the mathematical and statistical underpinnings of predictive modeling, including key ideas from statistical learning theory.
Using real-world datasets, students apply a range of classification and regression models, such as logistic regression, decision trees, and support vector machines. Emphasis is placed on data preprocessing, feature extraction, model evaluation, and deployment strategies. By the end of the course, students will have developed and deployed a machine learning model, demonstrating their ability to move from raw data to an operational predictive solution.
Teachers
Intended learning outcomes
- Understands fundamental concepts of machine learning, including supervised learning, predictive modeling, and statistical learning theory.
- Makes judgements on ethical considerations such as bias, fairness, and responsible AI deployment when working with machine learning models.
- Understands computational methods, data preprocessing techniques, and evaluation metrics for building, validating, and deploying models.
- Uses detailed theoretical and practical knowledge of classification and regression algorithms to develop predictive solutions.
- Communicates machine learning concepts, model results, and decision-making processes effectively to diverse audiences.
- Devises and sustains arguments to solve classification and prediction problems through statistical and computational reasoning.
- Applies supervised learning techniques to design, train, and optimize predictive models using real-world datasets.
- Consistently evaluates model performance, identifies limitations, and adapts to emerging tools and techniques in machine learning.
- Preprocesses data, applies feature engineering, and selects algorithms to create end-to-end machine learning workflows.
- Apply principles of statistical learning and algorithm selection to solve classification problems.
- Evaluate model performance using appropriate metrics such as accuracy, precision, and ROC AUC.
- Implement supervised learning models including logistic regression, decision trees, and support vector machines.
- Preprocess data and apply feature engineering techniques to prepare datasets for modeling.
- Complete a final project that demonstrates the selection, training, and deployment of a predictive model.
- Integrate mathematical, statistical, and programming knowledge into end-to-end machine learning workflows.
About
This course introduces students to statistical inference, equipping them with both the theoretical foundation and the practical tools needed to derive insights from data. Students begin by exploring probability distributions, confidence intervals, and hypothesis testing for single variables and proportions. The course then expands to inference methods for comparing two or more groups and analyzing relationships in multivariate datasets.
Students work with large-scale data using Python and PySpark, applying inference techniques to real-world datasets involving means, categorical variables, and proportions. Emphasis is placed on interpreting results in context and communicating findings effectively.
The course culminates in a final project in which students conduct a full inferential analysis using a multivariate dataset.
Teachers
Intended learning outcomes
- Uses detailed knowledge of inferential methods to compare groups, analyze multivariate relationships, and interpret statistical outputs accurately.
- Makes judgements on ethical data interpretation, ensuring statistical results are communicated responsibly and in context.
- Understands tools and techniques such as Python and PySpark for scalable statistical data processing and analysis.
- Understands theoretical foundations of probability distributions, confidence intervals, and hypothesis testing to perform statistical inference on real-world data.
- Consistently evaluates and reflects on analytical methods and personal learning needs to improve statistical proficiency.
- Devises and sustains data-driven arguments to solve real-world problems through rigorous statistical reasoning.
- Gathers and processes large datasets using PySpark and Python, applying hypothesis tests and confidence interval estimation to inform decisions.
- Communicates statistical findings clearly to both technical and non-technical audiences using appropriate visualizations and narratives.
- Applies inferential statistical techniques to analyze datasets and draw valid conclusions using a professional, evidence-based approach.
- Calculate and interpret confidence intervals for means, proportions, and differences.
- Utilize PySpark and Python to process and analyze large datasets for statistical inference.
- Explore relationships within multivariate datasets using appropriate inferential methods.
- Conduct hypothesis testing for single and multiple group comparisons.
- Apply core inferential statistics techniques to analyze real-world datasets.
- Complete a final project that demonstrates the application of statistical inference to a complex dataset, with clear interpretation and communication of results.
About
This course provides students with the tools and techniques to build, evaluate, and interpret regression models for real-world datasets. Students begin with simple linear regression and progress to multiple linear regression, learning how to assess model fit, interpret coefficients, and diagnose common modeling issues.
The course explores advanced modeling strategies, including interaction terms, polynomial transformations, and model selection techniques. Students also examine the bias-variance tradeoff and apply regularization methods such as Lasso and Ridge to prevent overfitting in high-dimensional datasets. Emphasis is placed on both statistical theory and computational implementation. The course culminates in a final project where students build and analyze a multiple regression model, drawing meaningful insights from data.
Teachers
Intended learning outcomes
- Understands computational tools and methods for implementing regression models and addressing multicollinearity in large datasets.
- Makes judgements on ethical considerations when interpreting and applying regression results to real-world decision-making.
- Understands fundamental and advanced concepts of regression, including model building, coefficient interpretation, and statistical diagnostics.
- Uses detailed theoretical and practical knowledge of model selection, bias-variance tradeoff, and regularization techniques to improve predictive accuracy.
- Communicates findings from regression analyses to technical and non-technical stakeholders through clear interpretations and visualizations.
- Consistently evaluates and improves modeling practices while identifying new learning needs in statistical modeling and computational tools.
- Applies simple and multiple regression modeling techniques to analyze relationships between variables with a professional, evidence-based approach.
- Devises and sustains arguments using statistical reasoning to address complex, high-dimensional data challenges.
- Gathers and processes data to perform diagnostics, apply transformations, and implement regularized models like Lasso and Ridge.
- Utilize Lasso and Ridge regression to control complexity and address multicollinearity in large datasets.
- Apply diagnostic techniques to assess regression model validity and improve performance.
- Incorporate interaction terms, transformations, and polynomial features to enhance model flexibility.
- Implement simple and multiple linear regression models to analyze relationships between variables.
- Compare and interpret the results of linear, logistic, and regularized regression models.
- Complete a final project that applies regression modeling to derive actionable insights from real-world data.
About
This course extends penetration testing skills into advanced and applied domains, with a focus on securing web and mobile applications, understanding modern cryptographic challenges, and addressing real-world attack surfaces in enterprise environments. Students begin with web application security, investigating common vulnerabilities, secure coding practices, and industry-standard testing tools.
Building on this foundation, students explore Active Directory attack methods and defenses, operational technology (OT) security best practices, and emerging topics such as AI-powered attack techniques and quantum-resistant cryptographic principles. The course concludes with an in-depth study of mobile device security, covering threat vectors, system configuration, and automated scan scripting. Students synthesize their learning in a comprehensive web application penetration testing project.
Teachers
Intended learning outcomes
- Understands tools, scripts, and frameworks for identifying vulnerabilities and strengthening defenses in diverse computing environments.
- Uses detailed theoretical and practical knowledge of Active Directory exploitation, OT security, and quantum-resistant cryptography to secure enterprise systems.
- Makes judgements on ethical hacking practices, compliance requirements, and responsible disclosure of vulnerabilities.
- Understands advanced concepts of penetration testing for web and mobile applications, including modern cryptographic challenges and AI-driven attack techniques.
- Conducts simulated attacks on Active Directory and OT systems while implementing defensive controls and mitigation measures.
- Designs and executes automated scanning scripts to enhance efficiency and repeatability in testing.
- Applies advanced penetration testing methodologies to identify, exploit, and remediate vulnerabilities in web and mobile platforms.
- Consistently evaluates emerging threats and technologies to refine penetration testing strategies and maintain security posture.
- Communicates findings through detailed documentation, reporting risks and remediation strategies to stakeholders.
- Complete a penetration test of a web application, including findings documentation and remediation recommendations.
- Identify and exploit common web application vulnerabilities and recommend corrective security measures.
- Analyze the impact of emerging technologies, including AI and quantum computing, on modern cryptography and system security.
- Assess and secure mobile platforms by identifying vulnerabilities, configuring device policies, and scripting automated scans.
- Conduct targeted Active Directory attacks and develop appropriate mitigation strategies.
- Evaluate the security posture of operational technology (OT) systems and implement defensive best practices.
About
Back End Development builds on previous knowledge of web development and security, and equips students with knowledge of server-side development so that they can become professional back-end developers and build enterprise-scale applications. Students learn to develop and deploy server-side applications with greater scope and complexity.
In this project-based course, students deepen their understanding by building the back end for a cross-platform application. The project will require implementing advanced features that add complexity and uniqueness to a server’s structure. Examples of these include payment gateways, chat rooms, full text search, WebSockets, etc. Students will design and build out all of the API endpoints needed for the application and properly secure them for use in any web or mobile front-end application. In doing so, they will explore the differences and tradeoffs between web services, APIs, and microservices. They will learn best practices for code quality including unit testing and error handling. They will also learn to efficiently document their APIs.
Students will understand key Developer Operations (DevOps) practices including environment design, testing, development controls, and uptime management. They will implement modern DevOps workflows (e.g., containers, cloud virtual machines), and learn tradeoffs between different approaches. They will set up continuous integration and continuous delivery, and explore various strategies for automated testing and application monitoring.
Teachers
Intended learning outcomes
- best practices for code quality including unit testing and error handling.
- knowledge of server-side development and architecture demonstrated by implementing advanced features such as API endpoints, chat rooms, full text search, WebSockets, and CI/CD pipelines.
- Utilize detailed theoretical and practical knowledge essential to back-end development.
- tools and techniques used in back-end development.
- efficiently document their APIs using appropriate conventions.
- implement modern DevOps workflows (e.g., containers, cloud virtual machines), and learn tradeoffs between different approaches.
- Devises and sustains arguments to solve problems related to back end development
- Make judgments based on knowledge of the rules and conventions for the proper use of back end development and demonstrate knowledge of the social and ethical issues relevant to technology.
- set up continuous integration and continuous delivery, and explore various strategies for automated testing and application monitoring.
- design and build out all of the API endpoints needed for a web application and properly secure them for use in any web or mobile front-end application.
- Understand and make reasonable decisions about key Developer Operations (DevOps) practices including environment design, testing, development controls, and uptime management.
- Possess the academic competences to undertake further studies in back-end development with a high degree of autonomy.
About
This course equips students with the knowledge and hands-on skills needed to investigate, analyze, and respond to cybersecurity incidents. Students explore the entire incident response lifecycle, beginning with threat detection and investigation, and progressing to containment, eradication, and recovery.
Key topics include digital forensics, malware analysis, and memory forensics across Windows and Linux systems. Students also apply Python-based techniques to evaluate and secure APIs, integrating automation into the response process. Emphasis is placed on developing mitigation strategies, remediation plans, and thorough documentation to improve organizational resilience. The course culminates in a simulated incident response exercise where students apply their knowledge to a realistic cybersecurity scenario.
Teachers
Intended learning outcomes
- Understands tools, scripting techniques, and frameworks for automating response activities and securing APIs.
- Understands the lifecycle of incident response, including detection, containment, eradication, and recovery, in alignment with industry best practices.
- Uses detailed theoretical and practical knowledge of digital forensics, malware analysis, and memory forensics to investigate cybersecurity incidents.
- Makes judgements on ethical, legal, and compliance considerations when handling sensitive forensic data and incident reports.
- Applies forensic techniques to investigate incidents across diverse platforms, including Windows and Linux environments.
- Communicates findings and recommended mitigation strategies effectively to technical teams and non-technical stakeholders.
- Consistently evaluates past incidents and processes to improve future response readiness and reduce risk.
- Devises and sustains response strategies to remediate threats and strengthen system resilience.
- Uses Python-based automation to analyze APIs and enhance incident response efficiency.
- Conduct memory forensics to identify and extract relevant forensic artifacts.
- Investigate and respond to cybersecurity incidents using industry best practices in digital forensics.
- Complete a simulated incident response exercise, documenting findings and proposed improvements.
- Implement Python-based techniques to evaluate and secure APIs.
- Develop mitigation strategies and remediation plans based on forensic findings.
- Analyze and interpret malware behavior across Windows and Linux systems.
About
This course prepares students to design, deploy, and maintain large language model (LLM) applications using modern machine learning operations (MLOps) practices. Students explore the open-source MLOps stack to manage the full machine learning lifecycle, including model deployment, version control, monitoring, and iterative improvement.
The course emphasizes data-centric approaches to improving LLM performance through high-quality data preprocessing and curation. Students gain hands-on experience with fine-tuning pre-trained transformer models and apply prompt engineering techniques to optimize outputs for business use cases such as summarization, classification, generation, and task automation. By the end of the course, students will be equipped to operationalize and sustain advanced AI systems in production environments.
Teachers
Intended learning outcomes
- Makes judgements on ethical, social, and privacy considerations when building and deploying AI-driven language models.
- Uses detailed theoretical and practical knowledge of transformer models, fine-tuning techniques, and data-centric approaches to optimize AI performance.
- Understands tools, infrastructure, and frameworks for scalable deployment and monitoring of production-grade LLM systems.
- Understands advanced concepts of LLM design, deployment, and lifecycle management within modern MLOps frameworks.
- Consistently evaluates system performance and adapts to evolving challenges in operationalizing advanced AI applications.
- Preprocesses and curates datasets to enhance LLM performance and domain-specific relevance.
- Communicates technical solutions and AI-driven insights effectively to both technical and business stakeholders.
- Implements fine-tuning and prompt engineering to customize and optimize model behavior for specific business needs.
- Applies MLOps principles to manage the full lifecycle of LLM applications, including deployment, monitoring, and continuous improvement.
- Leverage prompt engineering to enhance model output quality and alignment with business needs.
- Develop and maintain scalable, production-ready LLM systems using modern tooling and infrastructure.
- Integrate large language models (LLMs) into data science workflows to derive actionable insights.
- Utilize the open-source MLOps stack to manage the machine learning lifecycle, including deployment and monitoring.
- Apply fine-tuning techniques to adapt pre-trained models for domain-specific use cases.
- Preprocess and curate training data to improve the performance of data-centric LLM applications.
Entry Requirements
Application Process
Submit initial Application
Complete the online application form with your personal information
Documentation Review
Submit required transcripts, certificates, and supporting documents
Assessment
Your application will be evaluated against program requirements
Interview
Selected candidates may be invited for an interview
Decision
Receive an admission decision
Enrollment
Complete registration and prepare to begin your studies
.avif)