This module provides an introduction to the mathematical underpinnings of computing, from number representation and elementary machine operations to abstract automata and the limits of computation.
Problem based learning is emphasised and students will see how design is achieved in various current software engineering processes, including the waterfall and agile processes.
The Personal Project for CS1999: students develop a webserver for a buggy-racing project. Uses skills in web tech (HTML, CSS) and Python, as well as Git for version control (and optionally JavaScript).
CS2800 (Software Engineering): This course aims to introduce Software Engineering tools and techniques through practical experience of design and development that enable each individual programmer to help deliver effective, working, clean code, as part of a team, in a timely fashion.
By the end of this course a student should be able to:
- understand the software engineering techniques and managerial discipline required to work as part of a team
- understand and use basic object-oriented concepts
- appreciate the need for program documentation, testing, readability and modifiability
- use appropriate tools to support software development: Version control, programming standards, a modern IDE, graphical debugger, code style checker, unit testing frameworks, code metrics, etc.,
- be able to use Test Driven Development to deliver a small scale project.
- be able to describe appropriate workflows for delivering software using version control systems.
Module content includes: The software lifecycle, including: software development, planning and documentation. Team development, communication, managing risks and conflicts. Practical experience of standard industrial software engineering. Agile project management, use of version control in a team, use of tools, etc.
Course content includes: introduction to User-Centred Design (definition and history); perception and cognition; user experience (UX) vs. user interface (UI); heuristic evaluation; rapid prototyping; interaction studies/experiments.
Databases 2022-23
Timetable
Lectures
Lab sessions
Bedford building
PC 0-06/05/04
Contact Details and Office Hours
This course samples topics from various aspects of algorithms construction and analysis, including: Graphs and graph algorithms; more algorithm design paradigms; applications such as string algorithms and network flows; and complexity and lower bounds.
If there are any problems with this page, please contact me by e-mail, ask a question at a lecture, or pop in to my office McCrea 248.
Yuri Kalnishkan yuri.kalnishkan@rhul.ac.uk
This is the core data analysis course for the Big Data suite of MSc programmes. It covers basic principles and algorithms of data analysis.
By the end of the module you will be able to
- perform open-ended exploratory analysis of data, and master the analytical presentation and critical evaluation of the results of statistical analyses;
- construct linear projections of multivariate data and demonstrate an advanced understanding of non-linear dimension reduction methods;
- demonstrate practical experience of using standard graph visualisation methods and evaluation of results;
- be effective in avoiding data snooping;
- critically evaluate choices in representational mode, glyph design and colour design for presentation graphics.
The future is not what it used to be.(See the link for attribution.)
If there are any problems with this page, please contact me by e-mail, ask a question at a lecture, or pop in to my office Bedford 2-28.
Yuri Kalnishkan yuri.kalnishkan@rhul.ac.uk
This course covers the principles and techniques used to store and process massive quantities of data in modern Big Data systems.
This course aims to provide students with
(a) a broad understanding of the information assets and the conceptual and technical architectures of information and business intelligence systems in modern organizations
(b) the necessary background knowledge of, and skills to design, implement and evaluate business intelligence systems and technologies.
- understand standard programming concepts;
- apply understanding to solve programming tasks;
- evaluate programming solutions.