You are not logged in.

#1 2009-02-14 20:08:18

Basu
Member
From: Cornell University
Registered: 2006-12-15
Posts: 296
Website

Looking for software engineering exercises

I'm taking a class in software engineering now and I'm looking for practical software engineering exercises. That is, I'm not looking for a language tutorial, or somehting that tests "concepts" of software engineering. I'm looking for exercises (preferably language agnostic) where a simple program (say 3-7 classes) is described in terms of its public interface so that any relatively competent programmer can build a working program out of it, making their own implementation choices in the process. Are there any sort of exercises of this type? I haven't been too successful finding what I want using google.


The Bytebaker -- Computer science is not a science and it's not about computers
Check out my open source software at Github

Offline

#2 2009-02-14 21:27:13

lssjbrolli
Member
Registered: 2007-12-16
Posts: 26

Re: Looking for software engineering exercises

maybe something like http://projecteuler.net ...

Offline

#3 2009-02-14 22:59:14

VirtualRider
Member
Registered: 2008-08-20
Posts: 134

Re: Looking for software engineering exercises

ProjectEuler is nice for killing time, but has rather to do with discrete mathematics than programming tasks.

I can't give you the homepage that you are asking for (i'm interested, too), but why don't you create your own challenges by thinking about minimalistic programs?

Offline

#4 2009-02-14 23:26:36

Ranguvar
Member
Registered: 2008-08-12
Posts: 2,549

Re: Looking for software engineering exercises

Perhaps try re-implementing open source programs by looking at the manuals and header files only?

Offline

#5 2009-02-15 11:32:25

Nepherte
Member
From: Singapore
Registered: 2008-09-09
Posts: 427

Re: Looking for software engineering exercises

VirtualRider wrote:

ProjectEuler is nice for killing time, but has rather to do with discrete mathematics than programming tasks.

Luckily computer science is all about mathematics big_smile

Offline

#6 2009-02-15 14:41:11

scj
Member
From: Sweden
Registered: 2007-09-23
Posts: 158

Re: Looking for software engineering exercises

Data structures: implement and play around with them. An intimate knowledge on how and why different important data structures work is pretty much half of software engineering.

Offline

#7 2009-02-17 01:29:12

Basu
Member
From: Cornell University
Registered: 2006-12-15
Posts: 296
Website

Re: Looking for software engineering exercises

Project Euler is not what I'm looking for, though I think I might take VirtualRider's suggestion and start compiling a list myself.


The Bytebaker -- Computer science is not a science and it's not about computers
Check out my open source software at Github

Offline

#8 2009-02-17 04:56:25

keenerd
Package Maintainer (PM)
Registered: 2007-02-22
Posts: 647
Website

Re: Looking for software engineering exercises

A suggestion:  Make something simple, then make it work with a huge amount of data or nodes.

I've done projects like this for fun.  For instance, have you ever used ImgSeek?  It is a pretty cool app, it can recognize and cluster similar images.  The algorithm behind it (Haar transform) is simple.  But the app scales lousy, it uses .thumbs of every picture loaded in.  Load more than 10K pictures, and it gets sloooow.  So I wrote my own version, and loaded it with a set of two million images.  I learned a lot of fun stuff in this project, like how ext3 is limited to 32000 directories.  (I was using directories as bins for faster lookup.)

Or download the entire Gutenburg corpus and write classis lit search tool.  Make it support arbitrary glob commands.

Using UDP packets, get two computers on your LAN to "tick" in sync.  Sync it to the nearest millisecond.  Now add more computers.  Over flaky wifi connections.  Port forwared through a system on the other side of the world.

Play with povray.  Make a simple movie animation.  Now write an app that automatically farms out the rendering to a bunch of computers, collects the frames and glues together an avi.  Rewrite it in erlang.  Make it so you can pull the plug on any node (even the master!).

Alternatively, scale way down on a single system.  Dig out the oldest computer you have.  Take out all the ram.  Disable swap.  See if your google-berg seach still can run.  Related:  http://prog21.dadgum.com/29.html

Draw visualizations for really large sets of data.  Related:  http://bit-player.org/2009/long-division

Most software engineering is a matter of scale, so practice scaling things up and down.  I had a blast doing this in college - every week I could find a pile of pentiums 2/3s being thrown out and electricity is free in the dorms.  The rest of software engineering is making apps survive hardware failures.  Failures are frequent when using free computers harvested from the trash, but ymmv.

Offline

#9 2009-02-17 07:37:35

mikesd
Member
From: Australia
Registered: 2008-02-01
Posts: 788
Website

Re: Looking for software engineering exercises

keenerd wrote:

Draw visualizations for really large sets of data.  Related:  http://bit-player.org/2009/long-division

Wow. That is a great read. Good to see someone using lisp. It was interesting to see someone look at optimisation at the algorithmic level instead of just picking a faster language.

Offline

Board footer

Powered by FluxBB