# Events Archive: Spring 2010

## The Incompressibility Method

| 4:30 PM EDT | MC2066

In this talk, we shall explore the incompressibility method---an interesting and extremely powerful framework for determining the average-case runtime of algorithms. Within the right background knowledge, the heapsort question can be answered with an elegant 3-line proof.

View details

Heapsort. It runs in \$\Theta(n \log n)\$ time in the worst case, and in \$O(n)\$ time in the best case. Do you think that heapsort runs faster than \$O(n \log n)\$ time on average? Could it be possible that on most inputs, heapsort runs in \$O(n)\$ time, running more slowly only on a small fraction of inputs?

Most students would say no. It "feels" intuitively obvious that heapsort should take the full \$n \log n\$ steps on most inputs. However, proving this rigourously with probabilistic arguments turns out to be very difficult. Average case analysis of algorithms is one of those icky subjects that most students don't want to touch with a ten foot pole; why should it be so difficult if it is so intuitively obvious?

In this talk, we shall explore the incompressibility method---an interesting and extremely powerful framework for determining the average-case runtime of algorithms. Within the right background knowledge, the heapsort question can be answered with an elegant 3-line proof.

The crucial fact is that an overwhelmingly large fraction of randomly generated objects are incompressible. We can show that the inputs to heapsort that run quickly correspond to inputs that can be compressed, thereby proving that heapsort can't run quickly on average. Of course, "compressible" is something that must be rigourously defined, and for this we turn to the fascinating theory of Kolmogorov complexity.

In this talk, we'll briefly discuss the proof of the incompressibility theorem and then see a number of applications. We won't dwell too much on gruesome mathemtical details. No specific background is required, but knowledge of some of the topics in CS240 will be helpful in understanding some of the applications.

## Halftoning and Digital Art

| 4:30 PM EDT | MC2066

Edgar Bering will be giving a talk titled: Halftoning and Digital Art

View details

Halftoning is the process of simulating a continuous tone image with small dots or regions of one colour. Halftoned images may be seen in older newspapers with a speckled appearance, and to this day colour halftoning is used in printers to reproduce images. In this talk I will present various algorithmic approaches to halftoning, with an eye not toward exact image reproduction but non-photorealistic rendering and art. Included in the talk will be an introduction to digital paper cutting and a tutorial on how to use the CSC's paper cutter to render creations.

## Code Party

| 7:00 PM EDT | MC Comfy

There is a CSC Code Party Friday starting at 7:00PM (1900) until we get bored (likely in the early in morning). Come out for fun hacking times.

View details

There is a CSC Code Party Friday starting at 7:00PM (1900) until we get bored (likely in the early in morning). Come out for fun hacking times.

## Dataflow Analysis

| 4:30 PM EDT | MC2054

Nomair Naeem, a P.H.D. Student at Waterloo, will be giving a talk about Dataflow Analysis

View details

After going through an introduction to Lattice Theory and a formal treatment to Dataflow Analysis Frameworks, we will take an in-depth view of the Interprocedural Finite Distributive Subset (IFDS) Algorithm which implements a fully context-sensitive, inter-procedural static dataflow analysis. Then, using a Variable Type Analysis as an example, I will outline recent extensions that we have made to open up the analysis to a larger variety of static analysis problems and making it more efficient.

The talk is self-contained and no prior knowledge of program analysis is necessary.

## Compiling To Combinators

| 4:30 PM EDT | MC2066

Professor Ragde will be giving the first of our Professor talks for the Spring 2010 term.

View details

Number theory was thought to be mathematically appealing but practically useless until the RSA encryption algorithm demonstrated its considerable utility. I'll outline how combinatory logic (dating back to 1920) has a similarly unexpected application to efficient and effective compilation, which directly catalyzed the development of lazy functional programming languages such as Haskell. The talk is self-contained; no prior knowledge of functional programming is necessary.

## Gerald Sussman

| 5:00 PM EDT | MC5158

The Art of the Propagator

View details

Full details found here

## Elections

| 5:30 PM EDT | Comfy Lounge

Spring term executive elections and general meeting.

View details

Spring term executive elections and general meeting.