Texts
C# 5.0 in a Nutshell: The Definitive Reference 5th ed., Albahari, J. and Albahari, B. (2012) O'Reilly Media, ISBN: 978-1449320102
Principles of Concurrent and Distributed Programming: Algorithms and Models 2nd ed., Ben-Ari, M. (2006) Addison-Wesley, ISBN: 978-0321312839
Concurrency: State models & Java programming, Magee, J. and Kramer, J. (2006) Wrox, ISBN: 978-0470093559
Learning Strategies
18 lectures presenting key topics and concepts.
18 supervised practical sessions for the completion of formative exercises.
Normally 2 hours lecture and 1 hour practical per week for the first six weeks, following by 1 hour lecture and 2 hours practical per week.
Additional Assessment Details
ASSIGNMENT Weighting 100%; Design and implement using concurrency mechanisms a multi-user, multi-tier client-server application that is distributed over a network, and write a report (1000 words) documenting the solution and explaining the selection of the concurrency mechanisms used. (Learning outcomes 1 and 2)
Indicative Content
Multithreading in programming
Synchronisation primitives: mutex, monitor, send/receive mechanisms
Concurrency concepts: Concurrency types; Round Robin Scheduler; Priority; Processes v Threads; Synchronisation; Asynchronicity; Mutual exclusion; Indivisibility; Advantages of concurrency; Standard safety issues, liveness, starvation, race-condition
Classical problems e.g. Semaphore, Producer/Consumer
Thread-safety
Programmatic communication over a network (i.e. socket programming)
Multi-user, multi-tier client-server applications
Security issues
Resources
Suitable IDE for C# development such as Visual Studio
Special Admissions Requirements
Prior study of COSE40577 Introduction to Software Development or equivalent.
Web Descriptor
Using C# .NET students will create networked application using sockets and multi-threading.