Hi,

I am a beginner (not a total beginner though) in C#.
I am writing here because I want someone to give me advice on what to program in my free time in order to learn C# more. For example, I know how to zip/unzip files, read/write from xml files, use OpenXml, connect with database, send mail via code. I have read tutorials/books for programming in C#.

What do you think I can learn to do that I will need in the future? For example, I learned how to zip/unzip because a colleague told me I will use it a lot in many projects.

What do you suggest I program next?

Edited 5 Years Ago by Srcee: n/a

The first thing I ever programmed was a magic 8 ball :)

I guess it depends, you could scour source forge for an open source project that needs help (though I think a lot of that is C++ not C#, and not usually .NET) or try Google Code for the same.

Have you tried client/server stuff? If you want a headache and lots of head scratching that will make you learn, socket programming can be fun (and frustrating) if you have a network to play on.

You could also try CRUD development, and create a program that stores data, analyses it and charts it etc...

Some other generic ideas:

* A journaling program that uses rich text, encryption to keep entries secure and multiple users.
* A program that analyses vehicle gasoline performance based on mileage, tire, oil and other maintenance.
* A program that plays Netflix movies (Netflix API and Developer Network)
* A MP3 player
* A video chat program
* A video player
* An image editor
* A web browser

Just some ideas :)

The first thing I ever programmed was a magic 8 ball :)

I guess it depends, you could scour source forge for an open source project that needs help (though I think a lot of that is C++ not C#, and not usually .NET) or try Google Code for the same.

Have you tried client/server stuff? If you want a headache and lots of head scratching that will make you learn, socket programming can be fun (and frustrating) if you have a network to play on.

You could also try CRUD development, and create a program that stores data, analyses it and charts it etc...

Some other generic ideas:

* A journaling program that uses rich text, encryption to keep entries secure and multiple users.
* A program that analyses vehicle gasoline performance based on mileage, tire, oil and other maintenance.
* A program that plays Netflix movies (Netflix API and Developer Network)
* A MP3 player
* A video chat program
* A video player
* An image editor
* A web browser

Just some ideas :)

Thank you a lot, I really like your ideas and appreciate the help :)

Strategy games (or 3d games if you have patience and artistic talent) are always good learning exercises. Once you have the game built, creating an AI that can beat you is the next learning step. Chess comes to mind... (Although C# isn't exactly the ideal language for AI programming - it should still suffice)

Edited 5 Years Ago by skatamatic: n/a

Learn to create a WCF Service because then you can open it up to other platfomrs like Web and Mobile computing. I agree with checking SourceForge for ideas. You'll also learn about source code control like Subversion. I have a VB.Net project there for rendering HTML5 controls in ASP.Net. You could port something like that to C# so you see an example of something working and then gain contacts with other users. Good luck!

Strategy games (or 3d games if you have patience and artistic talent) are always good learning exercises. Once you have the game built, creating an AI that can beat you is the next learning step. Chess comes to mind... (Although C# isn't exactly the ideal language for AI programming - it should still suffice)

Tnx but I'm more interested with learning the C# methods, namespaces etc. than algorithms.

Tnx but I'm more interested with learning the C# methods, namespaces etc. than algorithms.

To each his own I suppose. Although as you learn more about programming you will likely begin to see that the language you use is not nearly as important as the algorithms that you implement with them. ;)

Comments
Totally agree! :)

Database expertise will carry you a long way especially in the business world.
LINQ to objects will then change the way you think about programming altogether.

Notice: I did NOT say LINQ to SQL or LINQ to entities.

Database expertise will carry you a long way especially in the business world.
LINQ to objects will then change the way you think about programming altogether.

Notice: I did NOT say LINQ to SQL or LINQ to entities.

Well I know how to connect to a database and execute SQL commands via ADO.Net. Was this what you had on mind?

You can take a look at the progs, that you usually use: different viewers, chat clients, Music/Video players, file managers, hardware utilities etc. etc. .. and make your own. With the functionality, that it's missing (well, actually about any prog you can say "It's a good one, but if it has <something>, it would be much better!" :D) .. so you have a chance to add this something and enjoy a perfect prog ;)

Well I know how to connect to a database and execute SQL commands via ADO.Net. Was this what you had on mind?

Yes, that's correct.
Automating Excel is another big benefit in the business world.
...taking data that comes from different sources and outputting a report in Excel without manuals intervention...

ASP.NET, WCF, Web Services, Silverlight...

Yes, that's correct.
Automating Excel is another big benefit in the business world.
...taking data that comes from different sources and outputting a report in Excel without manuals intervention...

ASP.NET, WCF, Web Services, Silverlight...

Crystal Reports is pretty sought after as well.

I think starting by implementing something like a text editor (just try and think of all the things missing in other editors and implement them). You can add things like a hex editor, ftp client, database connectivity, emailer etc... and you can implement threading and other constructs to improve performance.

Be sure to always remember commenting your code, versioning, catching exceptions and re-writing code that you think could be done better. These things will make you a better overall programmer.

Hope this helps!

This question has already been answered. Start a new discussion instead.