tags:

views:

865

answers:

7

What are some good desktop application projects I could code up that would be good practice? I have gone through the .NET Framework namespace structure pinpointing some of the namespaces and classes I have not used, so that I could come up with a project or two to create using them.

However, I am having trouble thinking of projects that have real-world use.

I would like to hear ideas for projects that cover these criteria:

  1. Use many of the namespaces in the .NET Framework
  2. Be "real": I find it hard to get into something if it doesn't have real practical use
  3. It would be ideal if the sum of all submitted projects covered literally every namespace that is relevant to desktop applications (I aim high)

The aim here is to expose myself to much of the .NET framework for the purpose of growing as a developer.

Thank you.

+1  A: 

I'm currently writing an application that is a personal money manager (Like microsoft money) which I entend to trial a whole lot of parts of dot net, including the following

  • WPF
  • WCF
  • SQL Server
  • Standard generics
  • Security
  • Linq queries on data and on sql data

This is a nice start I think for me. I have a lot to learn and dont get to use all of these items often enough at work.

simonjpascoe
+2  A: 

It's odd to worried about how much API of the framework you would use as a criteria to choose what application to develop,

However, if you must have an answer, perhaps you could consider creating a sort of Outlook-like application where you would you use:

  • System: This is a no-brainer.
  • System.Drawing: Custom drawing of controls, calendar drawing.
  • System.Diagnostics: Debugging and code profiling stuff.
  • System.Globalization, System.Resources: For internationalization.
  • System.IO: where you need to retain data such as e-mail, notes etc.
  • System.Security: Encryption of sensitive personal e-mail, appointments etc.
  • System.Media: Built-in simple media player for playing back audio-based attachment?
  • System.Net: To retrieve e-mails, what else.
  • System.Text: Text processing, you almost always need this.
  • System.Threading: You can seldom run away from threads in most real world application.
  • System.Timers: There's probably a check your e-mail every x minutes somewhere...
  • System.Configuration, System.Data: You probably need to persists application configuration, partly using the System.Configuration namespace, and some of it in a local sql server.
  • System.Collections: Some data structures that you almost certainly need to use.
  • System.Management: Show a cpu resources status or disk space indicator in your about window.

Also, parts of it could be develop in WPF, say you have a feature where you generate charts for people to visualize their daily e-mail/appointment activities. You may also get to cover Windows CardSpace because it surely will involves management of identities.

Hao Wooi Lim
Odd is so much more fun. But seriously, I want to broaden my mental coverage of the .NET Framework, so the more namespaces the better
Alex Baranosky
Funny I have been thinking about this also, I've been wondering what kind of application where I get to utilize (thus, learned) most of the .Net framework has to offer.
Hao Wooi Lim
I like your suggestion. +1
Alex Baranosky
+1  A: 

The short answer is to identify a gap and fill it; for example, You could write an application for rendering and printing maps from OpenStreetMap.

That'll cover implementing a REST client, lots in the graphics area, and printing is always useful. There is a real world use for this (heck, you could even open source the result to share with other OSM coders).

Rowland Shaw
+3  A: 

A couple from the top of my head:

RSS aggregator that loads feeds and saves them to a database. Then add some searching and filtering to it and you should move into a few different namespaces. Of the top of my head, System, System.Net, System.XML, System.Data, System.Linq, System.Collections.Generic, System.Threading, System.Configuration (if you want to you configuration files), System.Printing.

A project I've spent some time on is a IDictionary-based object that is a configuration tool I can use to store configuration settings to a database. Every time I get to the "halfway" mark I end up discovering more functionality that I need and add to it. Pretty limited in it's namespace usage, but it is a challenging exercise that you could find a lot of use in the long run.

thaBadDawg
Writing an RSS client is an excellent and archetypal 'learn by doing' project.
Kev
A: 

If you are looking for a real .NET desktop application, I would consider downloading one of the many open source projects. There is for example the free RSS feed aggregator written by Dare Obasanjo and others.

RSS Bandit

I would also take a look at the C# starter kit applications on MSDN:

  • Amazon-Enabled Movie Collection Starter Kit
  • Card Game Starter Kit
  • Teacher Starter Kit

Here are some links with comprehensive lists of open source software written in C#:

splattne
Thanks for those links. I already knew about them, but thanks. I am actually looking for ideas for my next project, that is the main impetus behind this question.
Alex Baranosky
+1  A: 

I'm currently writing an extension for MS Project. .NET visual studio makes it way too easy and I'm having fun with it. So, I'd say write a useful extension for some MS app...they need it!

+1  A: 

A desktop application for managing articles and customers for a specific business field ! (it can be a library for exemple in which the articles are mainly books and you will have to develop 2 UI one for the customer and another one for the administrator ! Give the possibility to the user to do a research in order to find a specific book and to know about the quantity of books in stock, the price of the book, the books of the same author available in this library etc. You can also help, the owner of the library to know the actual needs of its customers by adding a feedback system in which the user will suggest his favourite books (if there aren't in the library!), by the way you'll give the possibility to the manager to take a look at some statistics in order to find what are the top demands etc. You can think by yourself about other features you can add for that kind of application that will help any bookseller to manage his library.

This project will involve a lot of .NET features like:

Winforms / WPF WCF SQL server Regex XML serialization Security Linq ...

Amokrane
I am having the toughest time trying to install SQL Server Express 2008 on my Vista machine... Anyhow, thanks for the suggestion; I like it.
Alex Baranosky