COMP08129 2018 Advanced Programming

General Details

Full Title
Advanced Programming
Transcript Title
Advanced Programming
N/A %
Subject Area
COMP - Computing
COEL - Computing & Electronic Eng
08 - NFQ Level 8
05 - 05 Credits
Start Term
2018 - Full Academic Year 2018-19
End Term
9999 - The End of Time
Una LEstrange, John Weir, Dana Vasiloaica
Programme Membership
SG_KSODV_H08 202200 Bachelor of Science (Honours) in Computing in Software Development SG_KSFTD_K08 202200 Bachelor of Science (Honours) in Computing in Software Development (Add On) SG_KSODV_K08 202200 Level 8 Honours Degree Add-on in Software Development SG_KCMPU_H08 202200 Bachelor of Science (Honours) in Computing

The Advanced Programming module enables the students to have a deeper understanding of programming topics such as asynchronous programming and isolated storage. The module takes a hands-on approach and encourages students to implement complex applications utilizing the programming techniques mentioned above. Students will be encouraged to use their existing programming skills while learning new ways of programming such as multi-threading. Students will also be encouraged to use a variety of application types to implement their code.


Learning Outcomes

On completion of this module the learner will/should be able to;


Identify uses for and utilise BackgroudWorker components in an application. 


Implement advanced thread processing in an application.


Debug multithreaded applications.


Identify uses for isolated storage and implement isolation in a multitude of applications.

Teaching and Learning Strategies

Problem-based learning allowing students to direct their own learning.

Hands-on approach asking students to implement a number of applications during each class.

Module Assessment Strategies

20% Project, ongoing.

30% Practical, in-class assessment taking place in week 11 of the semester. 

50% Final Exam (end of semester exam).

Repeat Assessments

Repeat the Final Exam.

Indicative Syllabus

Identify uses for and utilise BackgroudWorker components in an application

  • Identify the reasons why and situations when components such as the BackgroudWorker can be used
  • Implement applications which use one or more BackgroundWorker components
  • Show the progress reported by a BackgroundWorker
  • Cancel a BackgroundWorker thread 

Implement advanced thread processing in an application

  • Describe what a Thread is and compare Threads and Processes
  • Create Threads and describe the difference between foreground and background threads
  • Discuss what is meant by joining, blocking and killing threads and implement these concepts in code
  • Allow threads to share resources by implementing a number of synchronisation techniques

Debug multithreaded applications

Use a number of tools to help debug multithread applications:

  • Use the Threads window
  • Use the Task window
  • Use the Parallel Stacks window
  • Use the Parallel Watch window

Identify uses for isolated storage and implement isolation in a multitude of applications

  • Describe when isolated storage should (and should not) be used
  • Access the isolated storage from a multitude of applications such as Console Applications, WPF Applications, Windows Forms Applications, Web Applications, Windows Services, etc.
  • Experiment working with different types of isolation such as user, assembly and domain

Coursework & Assessment Breakdown

Coursework & Continuous Assessment
50 %
End of Semester / Year Formal Exam
50 %

Coursework Assessment

Title Type Form Percent Week Learning Outcomes Assessed
1 Project Continuous Assessment Project 20 % OnGoing 1,2,3
2 Practical Evaluation Continuous Assessment Practical Evaluation 30 % Week 11 1,2,4

End of Semester / Year Assessment

Title Type Form Percent Week Learning Outcomes Assessed
1 Final Exam Final Exam Practical Evaluation 50 % End of Semester 1,2,3,4

Full Time Mode Workload

Type Location Description Hours Frequency Avg Workload
Laboratory Practical Computer Laboratory Practical 2 Weekly 2.00
Lecture Computer Laboratory Lecture 1 Weekly 1.00
Independent Learning Not Specified Independent learning 4 Weekly 4.00
Total Full Time Average Weekly Learner Contact Time 3.00 Hours

Online Learning Mode Workload

Type Location Description Hours Frequency Avg Workload
Online Lecture Distance Learning Suite Lecture 1.5 Weekly 1.50
Directed Learning Not Specified Directed Learning 1.12 Weekly 1.12
Independent Learning Not Specified Independent Learning 4.5 Weekly 4.50
Total Online Learning Average Weekly Learner Contact Time 2.62 Hours

Required & Recommended Book List

Recommended Reading
2014-12-24 C# Multithreaded and Parallel Programming Packt Publishing
ISBN 184968832X ISBN-13 9781849688321

If you are a C# developer and want to learn how to take advantage of the features of .NET for concurrent and multithreaded applications, then this book is for you. If you are already comfortable with C# but want to learn more about parallel design patterns, threads, tasks, and async, then look no further!

Recommended Reading
2014-06-13 Concurrency in C# Cookbook O'Reilly Media
ISBN 1449367569 ISBN-13 9781449367565

If you're one of the many developers uncertain about concurrent and multithreaded development, this practical cookbook will change your mind. With more than 75 code-rich recipes, author Stephen Cleary demonstrates parallel processing and asynchronous programming techniques, using libraries and language features in .NET 4.5 and C# 5.0. Concurrency is becoming more common in responsive and scalable application development, but it's been extremely difficult to code. The detailed solutions in this cookbook show you how modern tools raise the level of abstraction, making concurrency much easier than before. Complete with ready-to-use code and discussions about how and why the solution works, you get recipes for using: async and await for asynchronous operations Parallel programming with the Task Parallel Library The TPL Dataflow library for creating dataflow pipelines Capabilities that Reactive Extensions build on top of LINQ Unit testing with concurrent code Interop scenarios for combining concurrent approaches Immutable, threadsafe, and producer/consumer collections Cancellation support in your concurrent code Asynchronous-friendly Object-Oriented Programming Thread synchronization for accessing data

Module Resources

Journal Resources


URL Resources

Other Resources


Additional Information