tags:

views:

283

answers:

8

So I know this is a frequent question, but I still can't find a good one.

It's a 3-week internship where I get to teach high school students. I would cover basic c++ first week, and start the project second week.

What I need is a project that is doable (for them) in 2 weeks. It is interesting. Somehow I want it to be interactive (something that's cool, something that we get to use a lot or something like that)?

Any idea?

+3  A: 

Tic-Tac-Toe would be an interesting and fun project. Could start with making the basic game and then moving up to making a computer player.

ChronoPositron
I like the idea. Interesting though is that where I'm from this is exactly what first year computer science university students are required to do as a project.
Mac
But the only winning move is not to play!
Seth Johnson
This was my exact thought as a first project. Input is simple. Algos are simple, yet extensible.
Michael Dorgan
+5  A: 

One of my first class projects was writing a fractal explorer, the instructor had written a simple wrapper class to a windowing/drawing library and basically left it up to us to translate a simple fractal formula into the drawing routine. Depending on how quickly we got it we could add interactive features like zooming, panning, different color palettes, etc.

This project was fun because the end-result was impressive to behold and it allowed the students to explore some aspects of CS (algorithms, visualization, UI) without getting bogged down in too many details of language syntax, windowing libraries, etc.

maerics
+1, having awesome visual material to show off at the end is cool :)
Matthieu M.
+2  A: 

I'd do hangman. Teaches them very basic text input, ASCII art, and simple text processing. Repetition and iteration over arrays is covered in making sure that when they pick a letter that it covers ALL cases of the letter in the word, and not just one. But it's also very straightforward for somebody who is NOT new to plan out and divide into "easy" pieces IMO.

Very doable in two weeks IMO.

Kevin
That was our first project. It is a lot of fun too!
Sagar
+2  A: 

BFS, DFS, Dijkstra, Queues, Stacks, Lists, Trees, MaxFlow problem is good for biginers.

Svisstack
+1. I'd definitely teach them things like Dijkstra's algorithm, dynamic programming etc. - stuff that they wouldn't normally be able to learn at school, but now can thanks to your internship. Stuff like tic-tac-toe or whatever is all taught in highschools anyways.
Cam
These topics are critical for a basic undergraduate education but I would say they are far too advanced to capture the interest of beginners in two weeks!
maerics
A: 

I take it that your Students don't have an extensive knowledge of programming. So why not go for a simple text adventure or quiz type of game where you can cover the basics like conditions and loops?

marg
Ai! Text parsing for beginners isn't so fun :)
Michael Dorgan
@Michael Dorgan: seconded, as someone who recently graduated from the status of "total beginner", I can verify that parsing isn't too comprehensible early on.
Maulrus
Well you could program it without text parsing. e.g. control the adventure with numbers (here you could introduce ENUM) or design the quiz as multiple choice. Reading numbers from user-input should be doable for beginners!?
marg
If you take the time to develop a library for them to use that hides the nitty gritty, this can be simplified to the point that you get the fun of developing a game without the hassle of constantly explaining why `cin` has stopped working.
Dennis Zickefoose
+3  A: 

I'm assuming they only know console stuff, so what they could easily do is a console RPG game, a console Tic-Tac-Toe, minesweeper, hangman, the nim game if you want to go into a bit of math as well, a calculator, a binary clock, a card game simulation. There is a lot. If they know GUI stuff as well, some of these are even better fits.

There are also more algorithm-oriented problems: maze solvers, sudoku solvers etc.

I suggest you give them a list of recommendations and let them choose, maybe even come up with their own ideas. Do you want them to all have the same project? That seems kind of boring, and they might (read: will) copy each other's work. I think each one having a different project that they chose (even if from a list given by you) is better.

IVlad
A: 

Ask them to write a data management console application on windows. All they need to do is delete files in a directory if the disk space falls below a threshold value. From this they will also understand some operating system functions.

rboorgapally
A: 

Quite honestly, if all you have is 3 weeks and assuming these students have very little to no programming experience (assuming an average high school student), C++ is the wrong language to use.

You could arguably end up spending those entire 3 weeks helping students debug compiler and linker errors just due the difference between declaring a defining a function.

Honestly, if you want beginning students to walk away from a 3 week course, I think you'd be better off choosing a language better suited for it, such as python or even basic. 3 weeks of C++ with no other exposure will likely do nothing but frustrate and turn these students away from the discipline.

Nathan Ernst
Yeah I would suggest processing or something, because you get much faster results and you can easily see how the algorithms work..
Nils