The purpose of this website is to offer a comprehensive curriculum on the foundations of computer science. Here I will outline my ideas for developing this website into a useful on-line resource. These ideas are presented in the following structure:
- Who is the intended audience of this website? I will introduce several personas, each with a different background, for whom this website can be useful.
- Why this website: what is unique about it?
- How is this website to be built: based on what principles and what techniques?
- What is the structure of the curriculum, the courses, and their contents?
The grand vision is to develop a computer science curriculum that is entirely based on interactive, formal methods and to make such formal treatment accessible to a large audience. The ultimate goal is that every subject in computer science will be treated here in a formal way: from logic to databases, from programming languages to program correctness, from computer networks to operating systems, et cetera. To accomplish this vision is an enormous undertaking, and it might sound familiar to those who know the work of Alfred Whitehead and Bertrand Russell that culminated in the Principia Mathematica. There is a large chance that I will not succeed, but that is not a problem: a vision should be large and inaccessible, an ideal to strive for!
Although I expect the target audience of this website to be small, I identify four personas (non-existing people which are representatives of the target audience):
- Rowan: the university student
- Lacy: the autodidact
- Mina: the logician/mathematician
- Wilson: the senior software engineer
Rowan: the university student
As a university student, Rowan seeks additional resources that help him with studying existing courses that are part of Computer Science, Computer Engineering, Information Systems, or Software Engineering curricula. For him, this website is useful because:
- He needs a quick reference to previously studied topics as a refresher.
- There are different modes of information exchange: audio/visual explainers, textual descriptions and examples, and interactive exercises.
- He could use additional exercises to help him master a particular topic.
For Rowan, connections to the ACM Recommended Curriculum ensure that courses and topics on this website are also part of his own university's curriculum.
Lacy: the autodidact
While having no formal education in computer science, Lacy is an enthusiastic learner and discoverer. Although she has prior experience with programming and computer systems, she lacks a bigger picture to see how seemingly unrelated topics are connected. For her, this website is useful because:
- She seeks a systematic overview of topics to dive into and explore.
- She wishes to practice with rigorous reasoning and algorithmic thinking.
- She can follow her desired learning trajectory without any barriers of entry.
Mina: the logician/mathematician
Already trained in mathematical thinking, Mina seeks a resource by which she can quickly become acquainted with topics matching her interest within in computer science. Her main use of this website is:
- To quickly understand the mathematical foundations of computer science.
- Further references are provided to both the classical works in the scientific literature, and to journal and conference articles with more recent scientific results.
Wilson: the senior software engineer
As an IT professional, Wilson already has much experience with applying computer science in his day job. He may have completed a computer science education some time ago, but no longer remembers much of the finer details. To him, this website is valuable:
- To assess the usefulness of formal methods in his job as a software engineer.
- To reuse exercises as assessments within his recruitment process.
- He can recommend courses to junior colleagues as part of their professional development.
The didactic approach suitable for the material on this website is that of blended learning, or flipped classroom, where all lectures and exercises are provided digitally as on-line videos hosted on a video platform. This means that the course design is adapted so that all knowledge transfer, tutorials and exercises are organized digitally (in an individual environment). This choice allows for scaling up to a larger audience of students, since not every student needs to come to university. Instead, I wish to design lectures in a shorter format (audio/visual products called explainers) and insert in between these explainer videos different textual descriptions and interactive exercises. Sessions that are organized physically at university (in a social environment) are focused on collaboration, mentoring, presentation, and examination.
The idea for this website is to develop a fine-grained study system that allows for individual progress measurement. In a classical university setting, the behavior of individual students cannot be monitored while students see a lecture and work on exercises. This makes it more difficult to help students that are stuck, or to (dynamically) adjust courses that are perceived as difficult. Social/gamification features allow students to become more motivated to engage with the material and with each other. By keeping track of real-time 'standing' relative to other students and 'leader boards', it becomes possible to match up students at different levels.
To do so, I wish to develop interactive tutorials, object visualizers and proof editors, inspired by the step-by-step user-interfaces of tutorials in video games and the way interactive theorem provers work. An interactive tutor poses problems that the student can solve by issuing different commands. Each commands result in the construction of a proof object, that can be visually inspected and manipulated. Such manipulation then is recorded as another command that is issued. The constructed proof objects can also be verified, that is, it can be checked whether they provide an adequate answer to the posed question. See above for a proof of concept of a proof editor. See below for a proof of concept of an object visualizer. Progress on successfully submitting proof objects ties back to the previous discussion of real-time 'standing' and 'leader boards'. Each lecture comprises several short videos (current statistics indicates an ideal maximum duration of 5 minutes) interspersed with such interactive tutorials.
I embrace open education: all (interactive) digital material should be publicly available at a low cost. Not only does this allow students from less wealthy backgrounds (say, in different parts of the world) to access the material, also bright high-school students can already engage with the material, and alumni can revisit the material at a later stage during their professional career. However, not free for all: the problem with giving material away for free is that then the material is perceived as worthless.
Formal techniques are employed in presenting the courses and topics. Calculus of constructions. Object-oriented theorem proving. User interfaces and the web.
(work in progress)
In this section I shall outline the structure used in the design of courses. For that purpose I use the following schema:
Curriculum / Course / Topic / Element
A curriculum consists of different levels, where each level is gradually more difficult and challenging and builds on the knowledge of previous levels. Each course fits within the larger curriculum, making use of knowledge and skills obtained from the previous level, and aims to prepare the student for the next level. A course has specific goals to achieve that aim. Each course is designed in such a way to make attainment of the goals measurable (and thereby encourage students to strive as far as possible towards what is aimed for).
For each course, a selection of topics is made and combined in a particular way: topics are closely related and shed light on the same subject from a different angle. In this way, the different topics support each other. Each topic is subdivided into elements, possibly employing different presentation techniques: audio/visual explainers, textual descriptions, and interactive exercises. Every topic ends with additional exercises, to allow students to continue exercising and testing their own knowledge.
(work in progress)