Skip to content

The files and notes of my coursework of OSSU roadmap

Notifications You must be signed in to change notification settings

omardoescode/OSSU

Repository files navigation

OSSU

  1. How to code: Simple data

    • This course teaches the first principles of how to design a program from a paper and pen to readable, reliable, scalable code.
    • Remarkable Projects
      • Pomodoro App
      • Space Invader
  2. How to code: Complex data

    • This course explains computer science concepts such as abstraction, accumulators (context-prseving, result-so-far, to do accumulators), graphs, encapsulation, avoid re-compuations, etc...
    • The final project was to do the merge sort algorithm (A BEAUTIFUL ALGORITHM!)
  3. Programming Languages A

    • This course furhter explained more computer science while revisiting some again using the ML language (staticly typed language)
    • New concepts such as pattern matching, polymorphism, functions as first-class expressions, modules were addressed
  4. Programming Language B

    • This course used the Racket language as an example of a dynamically-typed language to explain concepts such delayed expressions/thunks, streams, promises, macros, meomoization
    • The homework of the second week was designing an interpreter for a programming language called MUPL
      • This language had support for primitive types (int/aunit/closures)
      • It supports recursive functions, higher order functions and so more (possible because we handled functions as first-class expressions that evaluate to closures with environment included for lexical scoping)
      • It had the famous build-in function map for convenience
      • HAVE A LOOK
  5. Programming Language C

    • This course explained the basic concepts of OOP, including basic ruby concepts as introductory material to OOP in ruby, then explained concepts such as classes, inheritance, dynamic dispatch, double dispatch, subtyping
    • An awesome homework was assigned once again to create a programming language (A Geometrical Language) in which we needed to understand the key concepts between functional programming and object-oriented programming, so we created the interpreter twice in each style in two languages (ML & Ruby) (Most of the code was provided for ML)
  6. Calculus 1A: Differentitation

    • I have a good background on calculus, so I will just do the exercises
    • Currecly doing