C# and .Net project cluster May 2005
News
Goal and requirements
- Goal
- The goal of the project cluster is to give
students a chance to familiarize themselves with the C# programming
language and the .Net class libraries, including the new version 2.0
features. To achieve this goal, students must write a substantial
piece of software in C# 2.0, document it, and to some extent compare
with Java or some other language they know.
In addition, students are welcome to explore the features and
gadgets of Visual C# Express or Visual Studio 2005 (if available) and
the extensive .Net libraries, but the teaching of these facilities is
not a goal of the project cluster.
- Required background
- To take part in this project cluster, the student must have
followed the course Object-Oriented Programming (OOP) at ITU or have
similar knowledge of Java or another high-level language from
elsewhere. Moreover, the student must have experience writing a
non-trivial program (more than 500 lines), for instance from a
four-week project.
- Project and report requirements
- (a) Write a project description stating the goals and success
criteria of your project. (b) Develop a substantial piece of software
using features of C#/.Net not found on the Java platform. (c) Write a
report that describes your software and how you developed it.
Possible report contents: requirements, analysis, design, description
and evaluation of the resulting software; notable differences from
Java (or other platforms you know), and any other topic that seems
relevant. There's a brief guide to ITU four-week reports in Danish and
in English
translation.
Students who are already familiar with C# or even with C# 2.0
should make a rather ambitious project, involving new or rarely used
features, or a project with more academic perspective, such as an
in-depth comparison of some particular aspect of C# and Java (or
should not make a project in this cluster at all).
As usual, remember that the basis for the oral examination is
your report and your presentation. Do not expect teacher and external
examiner to have time to experiment with your program or digest all
the source code.
Project cluster plan and contents
We will spend the first half week on introductory lectures (in lecture
hall 3) and exercises (in rooms 4A54 and 4A56), followed by a software
construction project using C# and .Net, and writing of a report about
this project.
- Wednesday 20 April at 1300-1400 in lecture hall 3 we meet
to select projects and form groups of 2 to 4 students.
- Monday 25 April (or before) you must register your project
in the project base.
- Monday 2 May, lectures 0900-1200 in Aud 3 and exercises
1300-1600 in rooms 4A54 and 4A56:
- Tuesday 3 May lectures 0900-1200 in Aud 3 and exercises
1300-1600 in rooms 4A54 and 4A56:
- Wednesday 4 May lectures 0900-1100 in Aud 3 and exercises
1300-1500 in rooms 4A54 and 4A56:
- Wednesday 4 May to Friday 27 May project work and report writing.
- Friday 27 May before 1500: project hand-in.
- Between Monday 20 June and Thursday 30 June: oral project
presentation and examination.
Teachers
- Peter Sestoft (sestoft@itu.dk), Department of Innovation: Lectures
and project supervision.
- Dan Witzner Hansen (witzner@itu.dk), Department of Innovation:
Exercises and project supervision.
Required literature
- Sestoft and Hansen: C#
Precisely, MIT Press 2004. Get it in the ITU bookstore.
- .Net library documentation at
http://msdn2.microsoft.com/library/default.aspx
- Kokholm and Sestoft: The C5 Generic Collection Library for C# and
CLI. Draft manuscript, ITU 2005. Will be available electronically.
- Possibly further materials to be announced later.
Other information
- Some of you (especially the cinema booking projects) need to
create a database. You can create a MySQL database at mysql.itu.dk
using the ITU database self-service, found at http://itu.dk/sysadm/db/. Once
you have created a database, you will get an email with instructions.
To access the database from .Net, you'll a Mysql ODBC 3.51 Driver,
available from http://www.mysql.com.
The mysql.itu.dk databases apparently cannot be accessed from
outside ITU. If you seriously need this ability, we can make a
database at sql.dina.kvl.dk instead.
- The ITU course base project
cluster description.
- A presentation
of the project cluster given on 20 April 2005.
Registered project groups
1 lco@itu.dk Lars Christian Olsen
1 lynet@itu.dk Rasmus Rasmussen
Cinema booking system
Supervisor: Dan
2 muifa@itu.dk Muhammad Iftikhar Akram
2 stud3089@itu.dk Naveed Anwar
Spreadsheet implementation in C#
Supervisor: Peter
3 hkvisli@itu.dk Harald Kvisli
Processing orienteering race results
Supervisor: Dan
4 cwi@itu.dk Christian Willumsen
4 hlas0002@itu.dk Christopher John Hlasny
4 petern@itu.dk Peter Nielsen
Search engine with C#/.Net
Supervisor: Peter
5 eskeb@itu.dk Jørgen Eske Runge Bentzen
5 grishina@itu.dk Julia Grishina
Cinema booking system
Supervisor: Dan
6 itspri@itu.dk Priyadarsini Seetharaman
6 safuriatj@itu.dk Safuriat Oloruntoyin Johnson
Java Annotations and C# Attributes - a Comparison
Supervisor: Peter
7 mono@itu.dk Morten Nordholt Andersen
7 oksana@itu.dk Oxana Babikova
7 ulrich@itu.dk Ulrich Haslund
7 vecee04@itu.dk Veronika Capskaja
PortalCam
Supervisor: Dan
8 khabf04@itu.dk Abdul Khader
8 ramoe03@itu.dk Rakesh Moturi
Spec# - A closer view
Supervisor: Peter
9 mlj@itu.dk Magnus Lund Jacobsen
9 ykok@itu.dk Morten Poulsen
AntiSpy- og adware program detection
Supervisor: Dan
10 hannesofie@itu.dk Hanne Sofie Jensen
10 jmg@itu.dk Jacob Grande
Biograf bookingsystem
Supervisor: Peter
11 bademester@itu.dk Thomas Kølle
11 boeuf@itu.dk Martin Anders Victor Leboeuf
Java annotations and C# attributes
Supervisor: Peter
List updated 2005-04-26
Some project proposals
Here are some project proposal outlines. Expect to spend some effort
yourself (the more the better) making the project idea concrete and
challenging for you.
In addition, you are welcome to make your own project proposal.
The project must have a substantial element of C# programming,
including new C# 2.0 features.
Updated 17 April 14:03.
- A1. Compare the implementation of generic types and methods in C#
2.0 with generic types and methods in Java 5.0. This must include
a non-trivial application of generic types or methods in C#, and a
non-trivial use of wildcard type parameters in Java. For instance,
implement a library of methods to work on ...
- A2. Compare attributes in C# with annotations in Java 5.0
(including Java's Annotation Processing Tool, APT). The project
must include a non-trivial application of attributes in a C#
program.
- A3. Movie threater seat reservation with graphical user interface
and backed by relational database. A classical project from
Java-based Introductory Programming.
- A4. Make a search engine project with C# 2.0. The original search
engine project can be found at http://www.itu.dk/research/algorithms/Kurser/SoegeProjekt/2003DECEMBER/.
You may use the collections data structures in
System.Collections.Generic or the C5 collection library, but must
then implement advanced features such as these (mostly taken from
the search engine project):
- Investigate how to easily support prefix-search. For example a
search for "house*" will find all pages with "house", "houses",
"houseboats" and so on. This only requires an extra table of
words, ordered lexicographically.
- Implement boolean search by supporting AND, OR etc. That is
"Hans" AND "Grethe" returns the pages where "Hans" and "Grethe"
occurs.
- Find homepages that are similar to each other.
- Let the user limit the search only to be at some given URL's,
for example search for *.dk, eller it-c.dk/dkm/*
- Support complex boolean searches, for instance (((a AND b) AND
c) AND f OR b) OR g.
- If a search has no result it mihgt be because the user has made
a simple typo, in such a way that an "a" became an "s". In such
cases you can choose to return pages, which contains words
almost matching the word searched for. (Like Google's
suggestion: `Did you mean banana?')
- Support free text searches. That is give the opportunity to
search on sentences. A strategy is to implement a freetext
search as an AND boolean search. This limits the search to a
small amount of pages which are then run through. Another
approach is to calculate hasvalues for sentences instead of
words. A third possibility is a more compact representation of
the text. Instead of having the word repeated a certain number
of times, you remember at which positions in the homepage the
word occurs. Find your own favorite strategy.
- A5. Empirical study of collection library efficiency: Compare the
performance of Niels Kokholm and Peter Sestoft's C5
library with Java 5.0 collection classes, with Peter Golde's
PowerCollections, and with Microsoft's System.Collections.Generic.
Design scalable test cases and test environments, and measure how
time (and space) consumption grows with test case size. It is to
be expected that C5 is slower than SCG by some constant factor
because of the richer functionality. Also design test cases that
cannot be conveniently expressed in C5 or SCG or PowerCollections
or Java's generic collections. The resulting report could consider
expressiveness, efficiency and convenience; or could focus on just one
of these topics in the comparison.
- A6. Implement a spreadsheet in C# 2.0 with a graphical user interface.
Project components: Design a model of cell contents (Number, Text,
Formula), design a syntax for cell contents (constants, formulas),
parse of cell contents, compute cell dependencies (and discover
circularities), recompute cell contents in the right order,
implement functions and operators.
The following projects are somewhat more exotic and require special
background knowledge:
Registered participants
ako@itu.dk Andreas Korsgaard
arb@itu.dk
arh@itu.dk
bademester@itu.dk
boeuf@itu.dk
cwi@itu.dk Christian Willumsen
donaldnkamwe@itu.dk
eskeb@itu.dk Jørgen Eske Runge Bentzen
grishina@itu.dk
hannesofie@itu.dk Hanne Sofie Jensen
hlas0002@itu.dk Chris
hkvisli@itu.dk
itspri@itu.dk
jama@itu.dk
jamil@itu.dk Muhammad Jamil Chaudhary
jmg@itu.dk Jacob Grande
junli@itu.dk
khabf04@itu.dk Abdul Khader
lco@itu.dk Lars Christian Olsen
lynet@itu.dk Rasmus Rasmussen
martinv@itu.dk
mlj@itu.dk
mono@itu.dk
muifa@itu.dk
narkumch@itu.dk
oksana@itu.dk
pcordero@itu.dk
petern@itu.dk Peter Nielsen
ramoe03@itu.dk
rmdsouza@itu.dk
safuriatj@itu.dk
smo@itu.dk
stud3044@itu.dk
stud3089@itu.dk
ulrich@itu.dk
umarfar@itu.dk
vecee04@itu.dk
yinghui77@itu.dk
ykok@itu.dk Morten Poulsen
List updated 2005-04-20.
Peter Sestoft (sestoft@dina.kvl.dk) 2005-04-04,
2005-04-29