elevatorpro 1.0.0

TTK4145 Real-time Programming elevator project, Group 25, spring 2025
Documentation
Extra resources for the elevator project
========================================

In this repository you will find some extra resources that may be useful when working on the elevator project. Since these resources are not *required* for completing the project they are kept separate from the things that are, such as the specification and evaluation information.

Contents:

 - [Single elevator algorithm and demo code]/elev_algo for implementing this as a finite state machine in C
 - [Cost functions]/cost_fns and ways to assign new hall requests to elevators
 - [Packet loss script]/packet_loss for Linux to easily simulate packet loss
 - Links to external programming language and design resources (below)




Language resources
------------------

We encourage submissions to this list! Tutorials, libraries, articles, blog posts, talks, videos...
 - [Python]http://python.org/
   - [Official tutorial]https://docs.python.org/3/tutorial/
   - [Python for Programmers]https://wiki.python.org/moin/BeginnersGuide/Programmers (Several websites/books/tutorials)
   - [Advanced Python Programming]http://www.slideshare.net/vishnukraj/advanced-python-programming
   - [Socket Programming HOWTO]http://docs.python.org/2/howto/sockets.html
 - C
   - [Amended C99 standard]http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (pdf)
   - [GNU C library]http://www.gnu.org/software/libc/manual/html_node/
   - [POSIX '97 standard headers index]http://pubs.opengroup.org/onlinepubs/7990989775/headix.html
   - [POSIX.1-2008 standard]http://pubs.opengroup.org/onlinepubs/9699919799/ (Unnavigable terrible website)
   - [Beej's network tutorial]http://beej.us/guide/bgnet/
   - [Deep C]http://www.slideshare.net/olvemaudal/deep-c
 - [Go]http://golang.org/
   - [Official tour]https://go.dev/tour/
   - [Go by Example]https://gobyexample.com/
   - [Learning Go]https://miek.nl/go/
   - From [the wiki]http://code.google.com/p/go-wiki/: [Articles]https://code.google.com/p/go-wiki/wiki/Articles, [Talks]https://code.google.com/p/go-wiki/wiki/GoTalks
   - [Advanced Go Concurrency Patterns]https://www.youtube.com/watch?v=QDDwwePbDtw (video): transforming problems into the for-select-loop form
 - [D]http://dlang.org/
   - [Official tour]https://tour.dlang.org/
   - [Programming in D]http://ddili.org/ders/d.en/
   - [Pragmatic D Tutorial]http://qznc.github.io/d-tut/
   - DConf talks [2017]https://www.youtube.com/playlist?list=PL3jwVPmk_PRxo23yyoc0Ip_cP3-rCm7eB, [2016]https://www.youtube.com/playlist?list=PL3jwVPmk_PRyTWWtTAZyvmjDF4pm6EX6z, [2015]https://www.youtube.com/playlist?list=PL7VSm729VhTBTYNdLEMsUAmcYEoNUV6Jf
   - [The book]http://www.amazon.com/exec/obidos/ASIN/0321635361/ by Andrei Alexandrescu ([Chapter 1]http://www.informit.com/articles/article.aspx?p=1381876, [Chapter 13]http://www.informit.com/articles/article.aspx?p=1609144)
 - [Erlang]http://www.erlang.org/
   - [Learn you some Erlang for great good!]http://learnyousomeerlang.com/content
   - [Erlang: The Movie]http://www.youtube.com/watch?v=uKfKtXYLG78, [Erlang: The Movie II: The sequel]http://www.youtube.com/watch?v=rRbY3TMUcgQ
 - [Rust]http://www.rust-lang.org/
 - Java
   - [The Java Tutorials]http://docs.oracle.com/javase/tutorial/index.html
   - [Java 8 API spec]http://docs.oracle.com/javase/8/docs/api/
 - [Scala]http://scala-lang.org/
   - [Learn]http://scala-lang.org/documentation/
 - [C#]https://msdn.microsoft.com/en-us/library/kx37x362.aspx?f=255&MSPPError=-2147217396
   - [C# 6.0 and the .NET 4.6 Framework by Andrew Troelsen (free pdf-version for NTNU students)]http://link.springer.com/book/10.1007/978-1-4842-1332-2
   - [Mono (.NET on Linux)]http://www.mono-project.com/docs/
   - [Introduction to Socket Programming with C#]http://www.codeproject.com/Articles/10649/An-Introduction-to-Socket-Programming-in-NET-using
   - Importing native libraries: [general]http://www.codeproject.com/Articles/403285/P-Invoke-Tutorial-Basics-Part and [for Linux]http://www.mono-project.com/docs/advanced/pinvoke/


Design and code quality
-----------------------

 - [Simple Made Easy]https://www.infoq.com/presentations/Simple-Made-Easy (video): How choosing the easy path will lead to complexity
 - [Boundaries]https://www.destroyallsoftware.com/talks/boundaries (video): The "Funcional Core / Imperative Shell" way of programming
 - [The State of Sock Tubes]http://james-iry.blogspot.no/2009/04/state-of-sock-tubes.html: How "state" is pervasive even in message-passing- and functional languages
 - [Defactoring]http://raganwald.com/2013/10/08/defactoring.html: Removing flexibility to better express intent
 - [Railway Oriented Programming]http://www.slideshare.net/ScottWlaschin/railway-oriented-programming: A functional approach to error handling
 - [Practical Unit Testing]https://www.youtube.com/watch?v=i_oA5ZWLhQc (video): "Readable, Maintainable, and Trustworthy"
 - [Core Principles and Practices for Creating Lightweight Design]https://www.youtube.com/watch?v=3G-LO9T3D1M&t=4h31m25s (video)
 - [Origins and pitfalls of the recursive mutex]http://zaval.org/resources/library/butenhof1.html. (TL;DR: Recursive mutexes are usually bad, because if you need one you're holding a lock for too long)
 - [The Future of Programming]http://vimeo.com/71278954 (video): A presentation on what programming may look like 40 years from now... as if it was presented 40 years ago.