C# and .Net project cluster May 2006
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 version 2.0
features released with Visual Studio 2005. 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 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 an ambitious project, involving new or rarely used
features, or a project with a serious 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 and exercises, followed by a software
construction project using C# and .Net, and writing of a report about
this project.
- In April (date and time to be announced) we meet
to select projects and form groups of 2 to 4 students.
- Monday 24 April (or before) you must register your project
in the project base.
- Monday 1 May, lectures 0900-1130 in 2A14 and exercises
1230-1500 in room 2A52.
- Tuesday 2 May lectures 0900-1130 in 2A14 and exercises
1230-1500 in room 2A52.
- Wednesday 3 May lectures 0900-1100 in 2A14 and exercises
1230-1500 in room 2A52.
- Wednesday 3 May to Friday 26 May project work and report writing.
- Friday 26 May before 1500: project hand-in.
- Between Monday 19 June and Friday 30 June: oral project
presentation and examination.
Teachers
- Peter Sestoft (sestoft@itu.dk): Lectures
and project supervision.
- Dan Witzner Hansen (witzner@itu.dk):
Exercises and project supervision.
Required literature
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.
Registered project groups
A:
Applikationsdesign af en lagdelt arkitektur med ASP.NET 2.0
Mikkel Byrsø Dan (decorus@itu.dk)
Nils Kasper Emil Oldby (oldby@itu.dk)
B:
Thin Client vs. Smart Client - anvendt på et udlejningssytem
Jesper Schulz (jesperschulz@itu.dk)
Ole Bengt Berard (berard@itu.dk)
C:
Cinema Ticket Reservation System
Sami Azam (samiazam@itu.dk)
Ammar Abbas (ammar@itu.dk)
Abid Hussain (pakistranger@itu.dk)
Khadim Hussain Mengal (kmengal@itu.dk)
D:
Domæne specfikt sprog for netværks kommunikation
Martin Frausing Kjeldsen (mfk@itu.dk)
E:
Et C# regneark
Jacob Atzen (atzen@itu.dk)
F:
Implementation af regneark
Claus Skoubølling Jørgensen (skoubolling@itu.dk)
Jens Lind (luzker@itu.dk)
G:
Generering af specialiserede collection libraries
Stephan Spangenberg (spangenberg@itu.dk)
Rasmus Johansen (johansen@itu.dk)
H:
Generator for specialized components in C5 library
Weiqing Hou (houweiqing1980@itu.dk)
Kim Velling Frederiksen (kvf@itu.dk)
Martin Vyuga (martinv@itu.dk)
I:
DAN: Movie theater seat reservation system in C#
Waqar Ahmad (waqar786@itu.dk)
Syed Imran Abrar Hussain (siah@itu.dk)
J:
DAN: C# /.Net implementation of particle filter for eye tracking
Lars Pellarin (pellarin@itu.dk)
Vedrana Andersen (vedrana@itu.dk)
List updated 2006-04-25
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.
- 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 and reflection in C# with annotations and
reflection (or the Annotation Processing Tool) in Java 5.0
(including Java's Annotation Processing Tool, APT). The project
must include a non-trivial application of attributes and reflection
in a C# program. For instance, you may develop a tool that uses
attributes or annotations to control the printing or displaying of
an object.
- A3. Movie threater seat reservation with graphical user interface
and backed by relational database. A classical project from
Java-based Introductory Programming.
- A4. 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 (SCG). Design a test
environment and scalable test cases, 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.
- A5. 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.
- A6. Computer Vision and Human Computer Interaction. Alternativs
to keyboards and the mouse are needed to enhance the experience when
playing games and for disabled people. Using cameras attatched to
the computer can be used to observe the users movements and
gestures. This information can then be transfered to commands that
control the computer. For example recognition of where people are
looking can be used to move the cursor to the point where the user is
looking and in this way the user controls the cursor movements on the
screen.
- A7. Sudoku: In this project you are to implement methods for generating
and/or solving Sudoku puzzles. You should implement a simple user
interface for entering number and methods for generating and solving
Sudoku puzzeles of various difficulties.
- A8. The Virtual Bornholm Project.
In this project the students is to work within a project aimed at
developing interactive and virtual models of historical places
in Bornholm. These applications should for example be executed on PDA's
and other mobile devices. Examples of student projects includes the use
of image analysis and computer vision to automatic or semi automatic
reconstruction of 3D structures (buildings and historical sites) from one
or more images, placing 3D virtual models into ímages (augmented reality)
or using mobile devices to enhance the experience for tourist visiting
Bornholm. Booking systems similar to the biobooking project can also be
considered.
- A9. The .Net framework and C# offers an extensive set of
primitives to make multimedia systems such as games, networkin, video
interaction and sound. Projects investigating and exploring these
possibilities could be considered.
The following projects are somewhat more exotic and require special
background knowledge:
Peter Sestoft (sestoft@dina.kvl.dk) 2006-04-29