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.