Contents

Subject Description

COMP10002 Foundations of Algorithms is designed to reinforce your programming skills and computing knowledge. In it, you will learn the language C, and how C programs are structured, compiled, and managed. At the same time, the subject is about algorithms, the fundamental building blocks of computation. Topics include dynamic data structures, the algorithms that manipulate them (lists, trees, hash tables), searching algorithms including pattern searching, and sorting algorithms. You are expected to develop your own ability to synthesize algorithmic approaches, and to evaluate problems and computational tasks in terms of what algorithmic techniques might be applicable.

The following people are involved in this subject in Semester 1, 2020:

Subject Coordinator and Lecturer: Dr. Jianzhong Qi

  • Email: jianzhong.qi@unimelb.edu.au
  • Responsibilities: Oversee the subject, deliver lectures, and develop assessment materials
  • Office Hours: Tuesday 3:00PM-4:00PM, Access via Zoom

Co-Lecturer: Dr. Shaanan Cohney

  • Email: cohneys@unimelb.edu.au
  • Responsibilities: Deliver lectures, develop assessment materials, help with student queries
  • Office Hours: Tuesday 2:15PM-2:45PM, Melbourne Connect, Superfloor (M)
  • Private and Zoom Consultations Available by Appointment

Head Tutor: Liam Saliba

Tutors:

  • Liam Saliba
  • Alec Yu
  • Kuoyuan Li
  • Lenny Bloom
  • Isabelle Ostrowski
  • Thomas Minuzzo
  • Stella Li
  • Alexander Zable
  • Hannah Chesterman

The lecturers are responsible for the overall organization of the subject and for the selection of lecture and workshop material. Assistance is provided by the tutors who manage the workshops, all of whom are senior students or recent graduates employed on a casual basis. Make a note of the name of your tutor at your first workshop. The subject will be delivered online (with on-campus workshops available) following the university guidelines

Lectures

Each week, you are expected to attend three lectures. If nothing else, if you are in Melbourne, please attend the first lecture to meet some of your classmates and enjoy our return to campus. The exact mode of delivery for the remainder of semester will be determined on the basis of a number of factors including student feedback, feasibility of hybrid delivery, and the quality of lecture capture. We understand that changes to delivery mode may be disruptive, but we are remaining flexible to ensure that we can provide the most fulfilling class experience possible.

The primary ways we’ll use lectures are:

  • To present the principles of the subject, illustrated by examples.
  • To introduce the material that will be developed in workshops.
  • To make announcements about the subject, particularly about the syllabus and assessment.
  • To inspire you to conduct the necessary work to learn the subject material It is intended that lectures this semester will have interactive elements, to incentivize attendance and to promote engaged learning.

Much, though not all, of the information presented in lectures is available from other sources, primarily the textbook, and the Canvas. Even so, you should endeavour to attend all of your scheduled lectures.

We’ll make the lectures and engaging and informative as possible, however they may not be to everyone’s taste. If you prefer to look elsewhere to learn the material we’re happy to support you. A few resources that we find particularly helpful:

  • Harvard CS50: Harvard College’s Introduction to Computer Science. Possibly the most entertaining Intro to CS lectures.
  • The C Programming Language, Kernighan and Ritche, 1978 (1ed), 1988 (2ed): Now outdated, but still well written introduction to C. Dr. Cohney first learned C from this book.
  • Stack Overflow list of best books on C: Take a look and see which you like
  • Algorithms with Tim Roughgarden: Dr. Cohney first learned algorithms from this Coursera course (more advanced)

Workshops

Each week starting from Week 2 of semester, you will be expected to attend a two-hour workshop, which will be run in a mixed model of both on campus and online (via Canvas Zoom page). Workshop recordings will be released by Friday each week from Week 2 in Canvas Lecture Capture page. To access on-campus workshops, make sure to follow the instructions on this page. The main purposes of workshops are:

  • To give you an opportunity to raise questions about the subject.
  • To clarify any problem that you are having.
  • To discuss alternative solutions to the assigned exercises.
  • To independently implement one or more of those solutions.
  • To develop your confidence in using computers to solve problems.

You will get much more benefit from the workshops if you ask questions and contribute to the discussion. That can only happen if you prepare in advance. It is important that you work through the assigned exercises before attending your assigned class.

If you do not adequately prepare, you will probably not be able to finish all the work during your lab time. Although the various Faculty of Engineering and IT computer laboratories are available at times outside of your scheduled class, you will find it much easier to complete your work when you have a tutor to assist you with problems.

Expectations

Like any class, we require a certain level of buy-in and behaviour to make things run smoothly and fairly. Our expectations from you include but are not limited to those for all CIS students at the University of Melbourne. Your first year computing courses are particularly important in that there is a substantial correlation between what you put into the course, including during lectures, and the skills you attain at the end. If you give this class your all, we will work hard to reward it and match it with your learning.

It is also our expectation that when attending a Zoom session of any sort that you keep your cameras on.

This is necessary to ensure that everyone gets the maximum out of the sessions and are not disheartened by a wall of black squares. You can opt-out from this policy by emailing both Dr. Cohney and Dr. Qi with a short email explaining your request.

If you are unable to meet this expectation, please take advantage of the recorded sessions after.

Workload

In total, we expect you to spend about 10 to 12 hours per week on this subject, starting in Week One and continuing through until the exam.

To help you reach this target, you are encouraged to prepare a complete study timetable that shows, for this subject, the following 12 hours:

  • Three hours of lecture attendance, plus three hours of follow-up lecture review. In each review hour, you should work through the content of the previous lecture to consolidate your understanding and read the relevant sections of the textbook. (Six hours in total).
  • Two hours of workshop attendance, plus two hours of preparation prior to that class. (Four hours in total).
  • Two further hours per week of review and/or reading, perhaps including a Study Group meeting with other students enrolled in this subject, and/or working independently on the assessed project work.

When the similar demands from your other three subjects are fitted into the equation, it is clear that you need to spend 40–48 hours per week on your University study. If you have outside interests (including work) that consume more than approximately 12 to 15 hours per week, you are seriously jeopardizing your chances of successfully completing a full- time subject load.

If your outside interests cannot be restricted to fewer than 12 hours per week, you should consider taking only three subjects per semester

Seeking Assistance

Canvas should be your first port of call when seeking help. Issues that affect multiple students are likely to have been picked up and answered via the Announcements page. More specific questions can be posted to the class message-board Ed for staff, or other students, to answer. Even if you don’t have questions of your own, you are likely to be able to benefit by reading other students’ queries and will perhaps even able to post answers to help them out. Staff will routinely monitor the forums, and when necessary, provide additional answers to questions. You should also feel free to approach the lecturers for help. Immediately after each lecture or during office hours is usually a good time to ask quick questions, or to request appointments for longer discussions. You may also make contact by email to ask questions and to set appointments; the Canvas “Staff Information” page will be kept up to date with any scheduled office hours.

If there are external issues causing problems with your studies, there are also a number of avenues available. While your staff, including your tutors, are not trained support staff, they may be able to help resolve course related issues or direct you to services that can better assist you. Some resources that you should be aware of:

  • Student Equity and Disability Support: This University Office supports students with disabilities, medical conditions, with religious needs, carers, elite athletes and performers, and members of the armed forces/emergency workers.
  • Counselling & Psychological Services (CAPS): The University of Melbourne Counselling and Psychological Services (CAPS) provides free, confidential, short-term professional counselling to currently enrolled students, as well as a range of workshops, mental health training, and helpful resources. This includes a 24/7 crisis line.
  • Stop1: The centralized student support service that manages enrolments, finance, and more.
  • Academic Skills: Can help with acclimatizing to the professional environment of a University, and studying in Australia

Assessment

A mid-semester test will be held in the lecture on Week 5 (tentative) via Canvas Quizzes worth 10% of your final mark.

Details of the mid-semester test will be made available closer to the date of the test. To help you prepare, a sample test will be provided. There will be test viewing sessions arranged.

There will also be regular project work, to be completed during (and then after) the workshops, including two assessed programming projects that account in total for 30% of your final grade. The two projects will be submitted online and will be due at Week 8 (tentative) and Week 12 (tentative).

The written two-hour examination at the end of semester via Canvas Quizzes (unless the University has new guidelines regarding the final assessment) is worth 60% of your overall mark. The exam will require detailed knowledge of the workshop exercises and projects, so it is important that you understand all of the programming work.

Hurdle Requirements: To pass the subject as a whole, you must obtain at least 50% overall when all marks are combined; must obtain at least 12/30 in the project work; and must obtain at least 28/70 in the mid-semester test and end-of-semester written examination when those two marks are combined.

Syntax Description Weighting
Mid-Semester Test Week 5 10%
Two Assignments Week 8, Week 12 30%
Exam   60%

Academic Integrity

In this subject, all assessed work is to be completed on an individual basis. You should be aware that we have access to sophisticated similarity checking software to automatically identify pairs of programs that have similar sections, even when variable names have been altered. If duplicate submissions are detected, both parties, receiver and giver, will be referred to the Faculty of Engineering and Information Technology (FEIT) for handling under the University Discipline procedures. For further information, see the University resource on academic integrity.

The University also has penalties that apply for misuse of computing facilities. You should respect copyright, and not store any unauthorized copyright material on any University computer; should refrain from accessing accounts and files other than your own; should not use University computing facilities for any non-study purposes; and should keep your own account secure.

We are also well aware of the many different strategies that students have used in the past to violate these policies, and routinely refer students to FEIT. Our staff have sophisticated tools to check for violations of this policy.

More importantly, it is not in your interest to violate this policy, as your learning is contingent on you doing the work. You are spending your time and money on the subject, and owe it to yourself to get out what you can. If you are struggling, your staff are here to support you and help you get on track. We can not do so unless you respect the need for honesty.

Assigned Text

The prescribed text is Programming, Problem Solving, and Abstraction with C by Alistair Moffat (revised edition, Pearson, 2012, with the blue cover). This textbook follows the course very closely, and a result will likely be the most helpful written resource. You will need to consult this text on a regular basis and should probably have your own copy. Information related to the text (including an errata listing) is at http://people.eng.unimelb.edu.au/ammoffat/ppsaa/.

Second-hand copies of the first edition (with the yellow cover) can also be used; differences between the first edition and second edition will be highlighted as they are encountered. An e-edition of the textbook (second edition) is available from the publisher’s website.

Subject Web Page

You are expected to visit both Ed and the course website every two or three days and read any subject announcements.

Getting Set Up For Coding in C

The software tools used in this subject are available as free downloads, and if you install them on your home computer or laptop, you will be able to work from home. Details of how to do this are linked from the Canvas page. You are also permitted to use any other C programming environment available, including the Windows Subsystem for Linux, and under MacOS on a Mac.

Another useful tool is VS Code. Note that knowledge of any particular software development tools is NOT part of the examinable content of this subject, VS Code and other similar editing environments are purely tools that facilitate your learning of C programming.

We will also be using Grok, and online development environment. More details on Grok will be provided after the commencement of the semester.

Dress For Success

The most important thing you can do through the semester is to step methodically through the assigned exercises, making them work on the computer and then exploring variations, doing your own “what if” experimentation. Doing this with another person will be even more rewarding and having a broad group of friends taking this subject is the second important thing. A strong support network means that you are much less likely to get left behind by lecture material, and regular discussions of the subject content as part of a study group–both asking and answering questions–is also beneficial.

Early in the semester is always a good time to make new friendships, so for the next few weeks don’t hesitate to introduce yourself to others at the start of each lecture and workshop

Most course content © University of Melbourne, (CRICOS: 00116K ABN: 84 002 705 224)