As an experiment in pedagogy in the winter semester of 2016-17, I offered a course on discrete mathematics as a project based course. Students worked as teams in the lab on three projects, while there were some quizzes and a few lectures too. There were 66 students in the class. I offered three types of projects. Groups were formed randomly and were required to come up with their own project idea. Here is a sample of one of the game projects
This project was created by a my students Chaitya Sanghavi, Freya Shah, Nikhil Balwani, Purvang Shah
- Create a game traditional or your own, using the MIT software scratch and analyze it.
- Study an application of a finite state machine (FSM) and write a code to implement it.
- Create a code that implements a graph-theory algorithm.
I got the students, most of whom had no programming experience, to learn scratch from using simple examples from the scratch website and then code for a game that was logic based, the last point was needed to be stressed because many groups had game ideas that used chance, speed and knowledge with not much logical reasoning required from the students. We worked on the first project in the lab for about a month, during which about one hour every week I taught discrete mathematics theory but rest of the time talked to students about getting their code to work and resolving logical and coding errors. I have a feeling that quite a bit of learning took place during this time which would be very hard to quantify. There were 3 students per group and the projects were graded by me as well as fellow students. The idea was to get students to enjoy the learning process.
Some of the games made were, Pacman, encroach and capture, word play etc.
On the project on finite state machines, I asked students to find applications of finite state machines and write codes that would either implement the application or make a new application that addresses a real world problem. Some examples were designs of traffic lights for six-roads junctions for efficient flow of traffic, control system for washing machines, lifts, design of survival games amongst others.
Project:3 Graph theory algorithms
Before starting on this project, I taught students some basic matlab coding and showed how to run simple programs. I also gave them some challenging codes, like coding for the Koch curve efficiently. Students either found an existing application or created their own application of graph theory and wrote a code in their preferred coding language. The projects mostly rotated around matching algorithms with some search and coloring algo.s thrown in.