s7oev / spd

Systematic Program Design (all 3 parts)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Systematic Program Design

What is this repo?

s7oev/spd is my proof that I have finished the courses Systematic Program Design - Part 1 (SPD1x), Systematic Program Design - Part 2 (SPD2x) and Systematic Program Design - Part 3 (SPD3x). All three are available on edX: SPD1x / SPD2x / SPD3x, however, were offered as MOOCs in 2015 so they are currently archived, meaning all material can be accessed but the staff is not available for support and no official certificates can be granted.

So, this repo shows all my work in the courses, including solutions to the recommended problems, as well as the quizzes. The latter can be design quizzes - in which case my code is shown, or multiple choice - in which case a PDF is attached. Keep in mind that the functional programming language used in this course is Racket-based (which itself is a dialect of Lisp). Because of this, DrRacket is necessary to preview properly the code. I have made exports of my solutions, yet they may have some missing data sometimes - because DrRacket allows the direct input of images, which cannot obviously be achieved in the text-only export. Yet, obviously, the actual code will be perfectly readable from the exports.

Most folders will have the following structure:
1. (problem name)-starter.rkt :: problem statement
2. (problem name)-solution (mine) export.txt :: my solution exported to txt
2. (problem name)-solution (mine).rkt :: my solution
2. (problem name)-solution (mine).rkt~ :: DrRacket temporary file (ignore)
3. (problem name)-solution.rkt :: official (from course staff) solution

Syllabus Part 1

Week Module Name Lectures Time to complete Practice Problems Quiz
Overall learning goal
1 Beginning Student Language 8 5-8 Hours 4 none
Learn to program with the core of the programming language used throughout the course.
2 How to Design Functions (HtDF) Recipe 6 4-7 Hours 3 Self-Assessed Design Quiz
Learn to use the HtDF recipe to design functions that consume simple primitive data.
3 How to Design Data (HtDD) Recipe 12 5-8 Hours 3 Self-Assessed Design Quiz
Learn to use the HtDD recipe to design data definitions for atomic data.
4 How to Design Worlds (HtDW) Recipe 7 3-5 Hours 1 none
Compound Data 3 4-6 Hours 3 Peer-Assessed Final Project
Learn to use the HtDW recipe to design interactive programs with atomic and then compound world state.

Syllabus Part 2

Week Module Name Lectures Time to complete Practice Problems Quiz
Overall learning goal
5 Self-Reference 7 5-7 Hours 4 Multiple Choice Quiz
Learn how to use well-formed self-referential data definitions to represent arbitrary sized data.
Reference 3 4-6 Hours 2
Learn to predict and identify the correspondence between references in a data definition and helper function calls in functions that operate on the data.
6 Naturals 2 3-4 Hours 2 Self-Assessed Design Quiz
Design an alternate data definition for the natural numbers, and learn to write functions using this new data definition.
Helpers 6 6-9 Hours 1
Learn a set of rules for designing functions with helper functions.
7 Binary Search Trees 6 5-6 Hours 3 Multiple Choice Quiz
Design a data defintion for Binary Search Trees, and learn to write functions operating on BSTs.
Mutual Reference 5 6-7 Hours 1
Learn to design with mutually referential data.
8 Two One-Of Types 2 3-5 Hours 2 Self-Assessd Design Quiz
Learn to use a cross-product of type templates table to design functions operating on two complex pieces of data.
Local 6 8-10 Hours 4
Learn to use local expressions in your function designs.

Syllabus Part 3

Week Module Name Lectures Time to complete Practice Problems Quiz
Overall learning goal
9 Abstraction 7 8-12 Hours 3 Multiple Choice Design Quiz
Learn how to design functions that are more general and versatile using abstraction.
10 Generative Recursion 3 5-6 Hours 2 Multiple Choice Design Quiz
Learn how to use generative recursion to create fractals.
Search 9 8-9 Hours 0
Expand on generative recursion to solve search problems, such as Sudoku.
11 Accumulators 5 9-10 Hours 3 Multiple Choice Design Quiz
Learn how and when to use accumulators in several ways.
12 Graphs 4 7-8 Hours 3 Multiple Choice Design Quiz
Learn to identify when information naturally forms a graph, and learn to write functions operatingon such data.
</div>

About

Systematic Program Design (all 3 parts)


Languages

Language:Racket 100.0%