Like Tree2Likes
  • 2 Post By dwks

ideas for a final project

This is a discussion on ideas for a final project within the General Discussions forums, part of the Community Boards category; Hi folks, I teach an introductory C programming course quarterly and I was interested in ideas for a final project. ...

  1. #1
    Linguistic Engineer... doubleanti's Avatar
    Join Date
    Aug 2001
    Location
    CA
    Posts
    2,459

    ideas for a final project

    Hi folks,

    I teach an introductory C programming course quarterly and I was interested in ideas for a final project. Next quarter I'm going to have about 22 students. This past quarter I had 4, and had them do a text-based connect-four game. It was pretty good and covered a lot of concepts like functions, loops, arrays, conditionals, and so on. But I was wondering if there were any other good ideas. It is a 10 week course, and I will probably assign them to groups of 3-ish and have them do presentations as well as a demonstration. Any input is appreciated! Also any input along the lines of "I wish someone had told me this, I had to learn it the hard way" for so-and-so concept would be appreciated too! Thanks!
    hasafraggin shizigishin oppashigger...

  2. #2
    Registered User manasij7479's Avatar
    Join Date
    Feb 2011
    Location
    Kolkata@India
    Posts
    2,498
    Can't you get the students to come up with their own ideas?

    The good ones will appreciate that...and who cares about the rest !
    Manasij Mukherjee | gcc-4.8.2 @Arch Linux
    Slow and Steady wins the race... if and only if :
    1.None of the other participants are fast and steady.
    2.The fast and unsteady suddenly falls asleep while running !



  3. #3
    Registered User whiteflags's Avatar
    Join Date
    Apr 2006
    Location
    United States
    Posts
    7,657
    There are plenty of card games that are played by 3 or more people, like old maid. If that's not hard enough, you can make them make the computer play intelligently. Like have the computer shuffle its' hand. I dunno.

  4. #4
    Linguistic Engineer... doubleanti's Avatar
    Join Date
    Aug 2001
    Location
    CA
    Posts
    2,459
    Hm, old maid or any other games of incomplete information that deal with cards would be difficult to verify and evaluate unless they also wrote a bunch of excess code. That is an interesting suggestion though.

    Also, having the students come up with their own ideas rarely works in practice in my experience as an instructor. Students at this level need as much structure as you can give them, and slowly the opportunities and imagination can be built up. The average student does not know the power or expanse of programming like some of the experienced coders here, so leaving them to their own to come up with, subject to my approval, a project of sufficient complexity, wouldn't be appropriate. Additionally it would take two weeks for them to come up with an idea which takes away from time spent on other things. Any other ideas? These are good suggestions!
    hasafraggin shizigishin oppashigger...

  5. #5
    Frequently Quite Prolix dwks's Avatar
    Join Date
    Apr 2005
    Location
    Canada
    Posts
    8,046
    - Conway's game of life (no "player" though so maybe not as fun)
    - Syntax highlighter or something (some parsing work)
    - Multiplayer tic-tac-toe (you can supply the networking code if you want, and lots of fun to play)
    - A webserver (though this is more interesting if students know web technologies already)

    Something that beginning programming classes don't seem to cover well is version control systems... Especially if there are groups of three involved, you could get the students to learn git. Or svn or whatever, but to be honest I think learning git is the most useful for students: it's a decentralized version control system, which means students are more likely to use it on their own for their other projects. Less setup involved. Yes, there are other distributed VCS like bazaar and mercurial but I'm git-biased.

    I also feel strongly that students should have a passing familiarity with gdb. Some people don't like debuggers and that's fine, but I am always amazed at the number of comp sci students that don't know what to do when they get a segfault. I asked a fourth-year student writing a massive game project what his biggest programming annoyance was, and he said "Segfaults. They take me forever to track down." Some people don't know that it's as simple as running the program in the debugger until it crashes, and then typing "backtrace" to see what the problem is. Combined with "up", "down", and "print X", it should take almost no time to figure out a reproducible segfault. I really think it would only take half an hour to explain this to students, and then maybe we wouldn't have comp sci grads whose most dreaded fear is "Segmentation fault". Seg faults are good. The operating system has found a problem on your behalf and is telling you about it. But quite a few people don't understand this.
    dwk

    Seek and ye shall find. quaere et invenies.

    "Simplicity does not precede complexity, but follows it." -- Alan Perlis
    "Testing can only prove the presence of bugs, not their absence." -- Edsger Dijkstra
    "The only real mistake is the one from which we learn nothing." -- John Powell


    Other boards: DaniWeb, TPS
    Unofficial Wiki FAQ: cpwiki.sf.net

    My website: http://dwks.theprogrammingsite.com/
    Projects: codeform, xuni, atlantis, nort, etc.

  6. #6
    Linguistic Engineer... doubleanti's Avatar
    Join Date
    Aug 2001
    Location
    CA
    Posts
    2,459
    Oh man! Conway's game of life! That's an excellent suggestion. I used to do that when I was learning programming, and it was super fun! Ok I'll add that to the list, and it's easy and covers arrays, functions, loops, and conditionals. Ok! Any other suggestions? Now I want a list of possibilities for them to choose from so maybe I need like 3 or 4.

    Also, some of the larger tools we can't really focus on like a version control system because this is an absolute intro course in C. I have to tell them what programming is, spend about a lecture motivating it, and spend maybe a quarter of every lecture motivating and outlining concepts. Plus there's a _lot_ of lab time (what better way to learn code than to do it!). So, yeah. But maybe if I teach a second course in programming we shall get to that stuff.

    Awesome suggestions!
    hasafraggin shizigishin oppashigger...

  7. #7
    Registered User
    Join Date
    Sep 2008
    Location
    Toronto, Canada
    Posts
    1,831
    The usual suspects are:

    A calendar generator for any year (within reason)
    Tic-tac-toe - I would say one in which player vs. computer. Player must not be allowed to win.
    Rubik's cube solver - one that follows a known method.
    Math formula evaluator - parser that handles parenthesis, operator precedence, perhaps trig functions.
    Math formula to its derivative converter. If the students are at that level.
    Any number of iterative solutions that are pre-integral / derivative math level; such as maximizing volume of a cylindrical can while minimizing its surface area. Or
    finding optimal path from one corner of a rectangular pool to the opposite corner - where a person's velocity is faster on land than in the water. How far does the person
    run along the edge until swimming across?
    Any number of iterative methods to evaluate pi to a desired precision.
    Any number of iterative methods to approximate trig functions (series).
    Mastermind game - computer guesses.

  8. #8
    Registered User
    Join Date
    Jan 2009
    Posts
    1,485
    Some other ideas:

    A base 64 encoder / decoder
    Flat file database
    XML parser / syntax checker

  9. #9
    Registered User whiteflags's Avatar
    Join Date
    Apr 2006
    Location
    United States
    Posts
    7,657
    A virtual horse race with betting

  10. #10
    SAMARAS std10093's Avatar
    Join Date
    Jan 2011
    Location
    Nice, France
    Posts
    2,675
    Quote Originally Posted by doubleanti View Post
    Hi folks,

    I teach an introductory C programming course quarterly and I was interested in ideas for a final project.
    Have them to build the game othello(or reversi)..this way the learn how to use single connected lists...using a 2D array dynamically allocated etc...I suggest no graphics should be required by the assignment.
    Quote Originally Posted by manasij7479 View Post
    Can't you get the students to come up with their own ideas?
    Too difficult for correction

  11. #11
    Registered User rogster001's Avatar
    Join Date
    Aug 2006
    Location
    Liverpool UK
    Posts
    1,422
    can be done nicely with a console:
    peg solitaire
    A-Star pathfinding - will teach AI concepts

    For a bit of maths based fun try an implementation of the magic gopher game - Which i am also going to post as a new cBoard programming challenge for beginners :->
    Last edited by rogster001; 09-09-2012 at 04:29 AM.
    Thought for the day:
    "Are you sure your sanity chip is fully screwed in sir?" (Kryten)
    FLTK: "The most fun you can have with your clothes on."

    Stroustrup:
    "If I had thought of it and had some marketing sense every computer and just about any gadget would have had a little 'C++ Inside' sticker on it'"

  12. #12
    RoD
    RoD is offline
    Redundantly Redundant RoD's Avatar
    Join Date
    Sep 2002
    Location
    Missouri
    Posts
    6,331
    Quote Originally Posted by manasij7479 View Post
    Can't you get the students to come up with their own ideas?

    The good ones will appreciate that...and who cares about the rest !
    This right here. My worst instructor had the best final I ever had. She wrote down a few key concepts to be included in the final and made a few guidelines as to minimum implementation of these concepts. Then we were free to create any project we wanted for a final as long as it had three things:

    1) Detailed paper explaining the project, including an algorithm
    2) All of the concepts adhereing to the guidelines
    3) Production log (basically a journal you kept daily from start to finish)

    This was great because it really covered all the bases and let the students run wild. I did a first person shooter and one of the kids in my class did something like Aim Bot if anyone remembers it. Basically everyone in the class could message the bot program he made and it would reply with answers the way our instructor would. It was called InstructorBot and based off our instructor. It was really cool and he never would have done that if she tied our hands.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Final Project for HS, any ideas?
    By Conneticut#88 in forum C++ Programming
    Replies: 13
    Last Post: 05-24-2006, 09:22 PM
  2. Final year project
    By khpuce in forum A Brief History of Cprogramming.com
    Replies: 22
    Last Post: 10-10-2003, 07:04 AM
  3. Ideas for FINAL program?
    By ray in forum C++ Programming
    Replies: 5
    Last Post: 12-21-2002, 02:46 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21