Christos Kloukinas, Department of Computer Science - - Advanced Programming: Concurrency | Index | Search | About | People@City Department of Computer Science City School of Mathematics, Computer Science, and Engineering Department of Computer Science People Home Page Publications Teaching - OOP in C++ - Advanced Programming: Concurrency - Project ideas Research - Xcd Web Mail Moodle Dr Christos Kloukinas - Advanced Programming: Concurrency Dr Christos Kloukinas Reader Office A205 Department of Computer Science City University London Northampton Square London EC1V 0HB C.Kloukinas (at) City.Ac.UK tel: +44 20 7040 8848 fax: +44 20 7040 0244 Staff.City.Ac.UK/c.kloukinas Reaching the College building (where my office is) from Angel. (https://bit.ly/fdc0K2) Reaching the main University building from Angel. (https://bit.ly/fNKDnq) Drop-In Office Hours (during teaching weeks) Advanced Programming: Concurrency Advanced Programming: Concurrency Material General: The module follows the "Concurrency: State Models & Java Programs" book (either edition will do - GET THE BOOK!) Introductory slides Handouts in PDF <-- !!!! Some extra study notes for the slides <-------- !!!!!!!!!!!!!!!!!!!!!!!! Revision tips Well, since 2020 there's no longer an exam for this module but this is a quick summary of what you'll hopefully learn in it. Supplement - Program Verification We will be analyzing our models using the LTSA model analyzer (you can download a copy of your own from here download LTSA - contains all examples in the book) Exercises from the Book You can try out the exercises from the first 5 chapters of the textbook. Lab Sessions: Note: User and password for the lab answers is "s". !!!!!!!!!!!!!! (lab answers are released one week after the lab) Lab 1 Lab 1 solutions Lab 2 Lab 2 solutions Lab 3 Lab 3 solutions Lab 4 Lab 4 solutions Lab 5 Lab 6 Lab 7 Lab 8 Programming Tools You can use whichever IDE you want for Java. But note that you should check that your programs work with the basic development tools, that is: javac (Java Compiler), java (Java Virtual Machine), etc. I do not have any IDE on my system (no Eclipse, BlueJ, etc.) so I will not be able to compile your program if it needs one of those, in which case you will lose marks (quite a few...). So either develop your programs using the aforementioned standard tools or make sure that they can compile your program once you've finished developing it (and before submitting it...). To execute an applet you can either use your browser or, even better, use the program appletviewer. This comes in the JDK. Use it as: appletviewer -J"-Djava.security.policy=java.policy.applet" file.html where file.html contains a link to your applet, for example:
appletviewer is fast, doesn't need much memory and can be easily killed if your applet goes wrong (you'd probably not want to kill your browser... ( The -J... option is needed to override the default security policy of the JVM, since Java applets are currently considered a security risk. The policy file needed is linked in the command above - store it locally where your file.html is. Here is the link to the policy file again.) Misc Reference cards for various things (and more) Andrei Alexandrescu (C++'s Standard Template Library creator) - what's the best text editor? Why study this module? Cause it's damn difficult to get right... Therac-25 - Concurrency killing humans: Therac-25 on Wikipedia Therac-25's analysis by Nancy Leveson What really happened on Mars? - Concurrency bug in the Mars Pathfinder (and how at NASA they "strongly believe in the ''test what you fly and fly what you test'' philosophy.", leaving debugging/etc. code in the final mission code.) Check the Further reading section of the Concurrency chapter of the Java SE tutorial :-) In 2013, Leslie Lamport was the recipient of the ACM A. M. Turing award (highest award in Computer Science), ``for fundamental contributions to the theory and practice of distributed and concurrent systems, notably the invention of concepts such as causality and logical clocks, safety and liveness, replicated state machines, and sequential consistency.'' Do spend a little time to read Lamport's Turing Lecture: The Computer Science of Concurrency: The Early Years (the PDF version is easier to read as the figures are placed in the text and have the right size). The text should be understandable by all and is a great summary of the main problems in concurrency - if you are puzzled by something, feel free to ask!