Professor Dorothea Blostein, Goodwin 720, (613) 533-6537,
The teaching assistants answer questions by email, and in person during office hours. If you have a scheduling conflict with office hours then email the TA to set up an alternate meeting time.
Paul Allison, firstname.lastname@example.org.
Office hours 6:00-8:00PM Mondays in Goodwin 241.
Paul marks all the labs.
Mao Yamanaka, email@example.com.
Office hours 5:00-6:30PM Tuesdays and Thursdays in Goodwin 248.
Here is a description of the CISC324 Learning Outcomes.
Optional online resources
Many full-length lectures by MIT Computer Science professors are available online. Here are a few OS related ones:
Processes, Synchronization, Deadlock, Part 2, Part 3, Part 4. Semaphores. (Dr. Chris Terman)
Virtual Memory, Part 2, Part 3, Part 4. (Part 1 by by Dr. Slivina Wachman, others by Dr. Chris Terman)
Operating Systems: Three Easy Pieces. This supplementary textbook provides alternative explanations of concepts such as processes and CPU scheduling. Recommended by a CISC324 student.
The Little Book of Semaphores by Allen B. Downey published by Green Tea Press. This book provides a clear and extensive overview of semaphores. Recommended by a CISC324 student who later served as a CISC324 TA.
On the lighter side, Julia's drawings about programming. Examples: What does an operating system even do?, the stack (in a C program), pipes, CPU scheduling, mutexes, page table, memory allocation, (Linux) copy on write, (Linux) user space vs. kernel space.
Bring questions for us to answer at the review sessions. Usually students ask questions about how to solve problems on previous CISC324 final exams. Final exams can be found at http://library.queensu.ca/exambank. I taught the course in 2016, 2015, 2014, 2013, 2012, 2009, 2008, 2007.
The exam will not test assembly language and machine language details that were used in problems 3 and 4 of assignment 1. For exams you only need to have a general understanding of the instruction execution cycle and the role of registers such as PC, IR and SP (program counter, instruction register, stack pointer).
This review problem for "write semaphore code" was already given to you for the first in-class exam. The problem is a simulation of cars and trucks crossing a bridge with a load limit. Make sure you take at least 20-30 minutes to try to solve this problem yourself, before looking at the solution. You won't learn much if you just read the problem statement and then read the solutions. Here is the problem statement and here are various solutions.
Please read this discussion of academic integrity from the Faculty of Arts and Science.
Assignments and labs must be handed in at the beginning of class on the due date. Late work is not accepted. If you have to miss a lecture you may hand the assignment in early by bringing it to the School of Computing office on the fifth floor of Goodwin Hall, across from the elevators. After hours you can slide your assignment under the door of the School of Computing office. Karen will put it into Professor Blostein's mailbox the next day; please clearly label the assignment with "CISC 324, for Professor Blostein".
Assignments and labs may be completed individually or in pairs. If you work as a pair, make sure that both of you participate fully. Take turns writing down the final version of your assignment answers. Take turns typing and executing the code for the labs. Assignment answers may be handwritten or typed, whatever you find most convenient.
Instructions and Files for Labs
In lab 5 you use the Java monitor construct to begin writing a simulation of a computer system, and in lab 6 you finish coding the simulation. This large programming assignment is broken into two labs to make sure that no one ends up trying to write the entire program all at once at the last minute. Lab 5 is marked pass/fail or pass/marginal/fail, and the TA provides coding corrections and suggestions if needed. The TA marks Lab 6 (your complete simulation) in detail. If you have trouble with the coding of lab 5, please refer to "How do I get started on Lab 5?" in section 5.1 of the lab 5/6 instructions in the course reader: here you find detailed advice on how to break the design, coding, and debugging of lab 5 into small stages.
These notes may help you to decide whether to consider pursuing an MSc degree. Please be aware that graduate students get paid enough to cover tuition and modest living expenses. Here is information about how to apply for graduate study at Queen's School of Computing, and answers to frequently asked questions. Application procedures for other departments and institutions are similar; you can find details on websites. Queen's Graduate Computing Society provides advice, support and social contacts for graduate students and graduate student applicants in the School of Computing. For example, the events page mentions the GCS Coffee Break, every Tuesday and Thursday at 10:30AM in Goodwin 620: this is an opportunity to meet graduate students and professors in an informal setting. The lab representatives list provides websites and email contacts for various School of Computing research labs.
Graduate school provides you with the opportunity to do research, to study a present-day problem in depth. It is common to start with some self-doubt, concerned about whether you will be able to contribute anything, and somewhat intimidated by the established researchers who publish papers in this area. I certainly went through this experience myself when I started graduate studies. I can assure you that you will be able to contribute! As long as you bring enthusiasm and persistence, it happens naturally that after you work on a problem for a year or two you will have insights and ideas that are valuable to others. For example, you can start research by reimplementing a few methods reported in the literature, and testing how well they work on new data. In doing this, you will identify problems and limitations, and you can try out various ideas about how to address these limitations. Voila! you are contributing to research.
You can choose to attend graduate school directly following your undergraduate education, or you can first work in industry for a few years and then go to graduate school. Both scenarios work out really well. Work experience is valuable in giving you additional maturity and insights for carrying out research. If you land an industry job that suits you well then you are all set for a happy and fulfilling career. If you start an industry job and after a few years feel that this job does not give you sufficient freedom to pursue your innovative ideas, then you can apply to graduate school to pursue those ideas.
An important part of the graduate school application process is making contact with potential supervisors: you have to interest a supervisor into committing his/her research funds to support your graduate studies. To be effective, your email to potential supervisors has to be personalized. Professors ignore generic email of the type "Dear Sir, I would like to study at your esteemed institution. Attached is my resume". Instead, take the time to learn a little bit about this particular professor's research, have a look at a few papers published by this professor and his/her students. Then write a short email (a few paragraphs) introducing yourself and expressing your enthusiasm/interest in this research area.
Strong technical writing skills are essential in research. You need to be effective in sending email to potential collaborators or potential supervisors, in writing a thesis, and in submitting papers for publication. If you like, have a look at advice about technical writing that I give to students in my graduate course CISC859 Pattern Recognition.
To find out about the latest concurrency research, skim through journals such as
Francis Atampore, a PhD student in the School of Computing, gave a guest lecture in CISC324 W2016 about concurrency control and research. Here are the slides from his presentation.