views:

225

answers:

7

Currently on an internship from my CS degree, we have some down time and I'd like to spend it working through a series of problems (although none too large) that would advance my programming skills and allow me to dip my toes in a large breadth of different topics and areas. Unfortunately, everything I do must be done in vb.net on .net 2.0, without downloading any particular libraries. I've already worked through many of the "code-golf" tagged problems on here and the programming praxis problems posed by dailywtf.

Suggestions?

+7  A: 

Project Euler: http://projecteuler.net/

RBarryYoung
Great challenges here, though vb.net is hardly an ideal language for it.
Rob Elliott
+1 fun, challenging, (some) quick and addictive!
SnOrfus
@Rob Elliott : That is why it would be a great way for somebody to learn more about a language. When it is not ideal you have to explore it more in depth to solve the solution.
David Basarab
VB.net hasn't hampered me on any of them yet. What would you think is harder in VB.NET?
RBarryYoung
+1  A: 

I would say you should use this downtime to further your project management, communication skills, and technical writing. These are some things that can help you more than anything.

CodeToGlory
What can you do to further your "project management" skills? I've always assumed that this comes with experience.
Chris
Chris, what you have assumed is correct. You have the right approach. Project management can wait. But, having good CS and problem solving skills is extremely important. This is coming from someone who focused on project management LIKE skills early on in the career only to repent later.
P.K
A: 

Why not find a concept/job/process/hobby that interests you and write a utility to make it easier or more efficient? Working on real-world issues force you to deal with the gotchas that 'code challenges' intentionally remove.

Rob Elliott
+1  A: 

http://guru.com and http://rentacoder.com =)

Cagdas Altinkaya
+4  A: 

Since you are on an internship, spend the time learning about the business. Knowing technical skills is great, but to prove your value to a company you need to know and understand the business that the company is in. Ultimately your job is simply to support that business, e.g., if you work for a supermarket chain, then your job is, ultimately, helping the business sell food.

Beyond that, I would suggest that you find an area of the business that you feel needs help and create a spike/prototype to solve that problem. Work with the people who are experiencing the pain and come up with a solution. Try and get other co-workers excited about what you are doing so you can have help.

Chris Johnston
+4  A: 

David Thomas co-author of the classic book "The pragmatic programmer" publish a series of exercises to help programmers to improve their coding skills called code katas

http://codekata.pragprog.com/

This a very good starting point for any developer.

BTW If you haven't read yet "The pragmatic programmer" I recommend you to read it as well.

David Thomas and Andy Hunt are two of my top 10 most influential programmers.

Alberto Gutierrez
+1  A: 

I would tend to agree with most of the answers here. I found myself in a similar situation last summer and found that it was very beneficial to take the applications I had access to and try to follow their control flow to understand every step of execution. This was especially true as I had never done .Net-base web development and this gave me some great "sample" code to learn from. Additionally, as Chris Johnston said, try to find out more about the company. Start asking people everywhere if they have something you could work on. Even if it's mundane, you will learn something from the experience. And, if nothing else, it will show you boss/bosses that you are driven and self-starting. How you handle your down time now might actually help you get a job in the future by building an excellent reference.

If all else fails, play with something you've never done before or that interests you. For me, I had never developed a GUI prior to my work with this company so I spend some time writing a GUI for an application I had written to automate some tasks. This introduced new challenges that dealt with threading and concurrency.

Basically, my advice is to keep your ears to the ground and look for work. It will not only improve your abilities as a programmer but also give you an excellent reputation at your company.

regards, chris

Chris Thompson