SYSC 2100: Algorithms and Data Structures (Winter 2015)


Latebreaking News

·         None, the course is over J


In the Winter 2015 term, Professor Kunz was teaching SYSC 2100: Algorithms and Data Structures. The online calendar description can be found here. This page contains some information about the course and links to additional resources available to the class, either provided by the instructor or existing in the Internet.

Students who do not write the final exam have the option to write an exam at a later point in time. This rule, aimed at students who are sick during exam periods, apparently leads to some abuse by students who strategically choose which exam to write when. In an effort to be fair to students who cannot write the exam for a legitimate reason, while at the same time discouraging the abuse of this rule, the following policy has been used by some faculty members:

Students taking supplemental or deferred examinations have several more months to study than their colleagues. 
Also they have a less-crowded examination schedule. Thus it is only fair to the majority of students to 
expect a substantially better performance on these examination than on the final.

This is the policy that I will also adopt for this course. Please note that the above formulation leaves it up to the instructor whether the supplemental or deferred examination will be harder or the marking scheme will be more rigorous.

A note on assignments and cheating: all assignments are individual assignments. Evidence of cheating will be investigated and will be reported to the Associate Dean, see also General Regulations 14. Cheating consists of collaboration (handing in someone else's solution as your own as well as allowing someone else to copy your solution) and extensive quoting from textbooks and other sources without proper reference. I do encourage students to discuss the assignment questions with each other, and to consult textbooks and other sources to derive an answer. However, I also do expect students to hand in solutions that are clearly their own effort, clearly identifying the extensive use of external sources (and your classmates do not count as valid external sources).

We continually talk about algorithmic complexity in class. An interesting website, that takes a programming problem (finding prime numbers) and develops a range of solutions, is discussed at this website. The solutions (including some false paths) become increasingly more efficient. Contrary to the discussion in class, the examples are based on measuring the real execution time, rather than asymptotical analysis. But you can try to figure out for yourself (i.e., it is "left as an exercise for the reader") whether the asymptotic complexity decreases as well.

WWW Resources: This course includes programming assignments in Java, focusing on data structures. Oracle provides an online tutorial for the Collections Framework which provides many common ADTs we will discuss in the course.  The course textbook website provides links to additional resources for students. For work in the computing labs, please also consult the Health and Safety Manual. Coursera has a MOOC that is somewhat related to this course, entitled Algorithms: Design and Analysis, with the video lectures available as preview here. That course focuses more on the algorithm side and less on data structures, but introduces some of the same notions of algorithm complexity. You may want to follow that course as well, though I thought it is rather fast-paced. But then again, you can always watch a segment multiple times.

 


Course Handout, Exams, and Assignments:


Course outline and supplementary material. To encourage you to read/study the material using the course textbook, I am not posting my slides. But, where appropriate, you may find additional information for different sections posted here.

Note that some of the links here lead to pages with Java applets to animate specific algorithms. With the newer versions of the Java runtime, you may not actually be able to run these applets in your browser unless you configured Java security to allow downloads from specific sites to execute. This page explains how to set the security settings for Java 7 and 8.