Skip to content

Master Course: Concepts of Programming Languages - University of Applied Sciences Rosenheim

Notifications You must be signed in to change notification settings

0xqab/concepts-of-programming-languages

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Concepts of Programming Languages

Master Course: Concepts of Programming Languages - Rosenheim Technical University - 2020/2021

The course "Concepts of Programming Languages" is designed as a master course. Solid programming skills in Java/C/C++ are required. I also assume that students have introductory skills in Scala and Python. For all exercises and examples, the course uses Go (Golang) as concrete example. We will look at typical styles and application areas like OOP, FP, Parallel-, Distributed- or Systems Programming.

Goal of the Course

  1. Learn the Concepts of Programming Languages
  2. Learn how Go differs from Java, C/C++, Scala and languages
  3. Get solid skills to pick the right language for a given problem

It is somewhat unusual, that we focus on Go in all Lectures. Master students are typically well skilled in Java. They have some basic knowledge in C/C++, maybe JavaScript, Ruby, Python or Scala. Since Go is a multi paradigm language, the lecture uses Go to demonstrate the basic concepts of these languages and discuss features which are missing in Go. We go from concrete to the abstraction and not vice versa. Each student will compare Go to one of these languages as Semester Work: Modula, Ada, Smalltalk, C++, Eiffel, Objective C, Haskell, Clojure, F# , Erlang, Scala, D, Occam, Rust, Swift, JavaScript, Ruby, Python, Kotlin. We will release the results here.

Lecture 1 - Introduction

Lecture 2 - Basics in Go Programming, OOP Part I

Lecture 3 - Object Oriented Programming in Go, OOP Part II

Lecture 4 - Building Parsers

  • Practicing Go using the example of parsers for boolean expressions
  • Slides
  • Exercise 4

Lecture 5 - Functional Programming

  • Introduction in Functional Programming, the Lambda Calculus and the implementation in Go
  • Slides
  • Exercise 5

Lecture 6 - Concurrent Programming

  • Why concurrent programming matters! Go routines and channels, Go concurrency patterns, The dining philosophers problem
  • Slides
  • Exercise 6

Lecture 7 - Distributed Programming

  • Introduction into Consensus Protocols
  • Raft
  • Implementing Raft with Go
  • Slides
  • Exercise 7

Lecture 8 - Cross Compiling with WebAssembly

  • Introduction to WebAssembly
  • WebAssembly implementation of Go
  • Slides
  • Exercise 8

Lecture 9 - Systems Programming

  • Introduction into systems programming
  • Using Cgo to communicate with native libraries
  • Building an OS-level virtualization software in Go
  • Slides
  • Exercise 9

Lecture 10 - Enterprise Programming

Lecture 11 - Logic Programming

About

Master Course: Concepts of Programming Languages - University of Applied Sciences Rosenheim

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 88.5%
  • Prolog 6.7%
  • Makefile 2.2%
  • HTML 0.9%
  • Dockerfile 0.5%
  • Shell 0.4%
  • Other 0.8%