TeacupAndTragedy
Badges: 14
Rep:
?
#1
Report Thread starter 11 months ago
#1
Hi there,

I'm currently on a gap year and want to extend my coding knowledge, and also have something to prove my experience to any future employers.

What sort of thing should I aim to achieve? Should I come up with my own project ideas, or look up new ones online to challenge myself? Also, how should I display this portfolio?

Thank you!
0
reply
TeacupAndTragedy
Badges: 14
Rep:
?
#2
Report Thread starter 11 months ago
#2
bump
0
reply
winterscoming
Badges: 19
Rep:
?
#3
Report 11 months ago
#3
There's a really good list of programming project ideas here: http://www.dreamincode.net/forums/to...ct-ideas-list/ - you don't need to do anything which is particularly original, nearly every idea you'll ever think of will probably have been done already by 1000s of other people before anyway, so don't worry about trying to do something unusual or different
(some more ideas here too: https://www.freecodecamp.org/learn/c...home-projects/ )

I can think of a lot of different possible goals to work towards - it's probably best to choose one or more of these first then choose a project based on that: Whatever project you choose is probably to end up leading you towards learning one or more libraries/APIs/frameworks (e.g. web or app framework which contain all the building-blocks for an app), and probably also involve diving deeper into various areas of computer science and writing your own code to get things working (data structures, data representation, algorithms, networking, threading, memory management, etc.). So there's usually more to it than just building your raw coding skills.

  • Algorithms and data structures - for example, creating an app which is able to automatically generate or solve a Sudoku puzzle (or tell you whether a Sudoku puzzle is unsolvable).
  • Game development - Python might be a good choice using PyGame - e.g. classic arcade games like space invaders would involve looking at game loops, user input events, screen updates, etc.
  • Low-level/system-level programming - That could be something like picking up an Arduino and doing some hardware-related stuff in C or C++, or maybe looking into low-level network programming using sockets (e.g. creating a 'chatroom' client-server app)
  • Server-side Web apps - learning how to create a web app driven by a web server using a language like C#, Python or PHP.
  • Client-side web apps - I.e. beyond just the basics of HTML/CSS/JavaScript and learning to do build much more sophisticated apps using a framework like React or Angular. (It's probably a good idea to learn to make server-side web apps first before doing this though)
  • Build an app on top of someone else's free, public web API - https://apilist.fun/ (e.g. I saw an API in that list which has tonnes of data about football - might be fun/interesting if you like football. There was another one food and recipe data, etc.)
  • If you own any devices at home which have their own API or SDK you could try building something for those. For example, Amazon Echo has an SDK which allows you to create your own Alexa Skill.


Also think about which language/s you'd like to use. Any of the popular mainstream languages are very worthwhile, but the language might also steer you in a particular direction, for example, C and C++ would steer you in a direction of doing more low-level/system-level programming involving fiddling about with memory/bits/bytes, whereas Java and C# hide away much of the low-level stuff and also have a bunch of big frameworks for making more sophisticated apps instead.
Last edited by winterscoming; 11 months ago
1
reply
TeacupAndTragedy
Badges: 14
Rep:
?
#4
Report Thread starter 11 months ago
#4
(Original post by winterscoming)
There's a really good list of programming project ideas here: http://www.dreamincode.net/forums/to...ct-ideas-list/ - you don't need to do anything which is particularly original, nearly every idea you'll ever think of will probably have been done already by 1000s of other people before anyway, so don't worry about trying to do something unusual or different
(some more ideas here too: https://www.freecodecamp.org/learn/c...home-projects/ )

I can think of a lot of different possible goals to work towards - it's probably best to choose one or more of these first then choose a project based on that: Whatever project you choose is probably to end up leading you towards learning one or more libraries/APIs/frameworks (e.g. web or app framework which contain all the building-blocks for an app), and probably also involve diving deeper into various areas of computer science and writing your own code to get things working (data structures, data representation, algorithms, networking, threading, memory management, etc.). So there's usually more to it than just building your raw coding skills.

  • Algorithms and data structures - for example, creating an app which is able to automatically generate or solve a Sudoku puzzle (or tell you whether a Sudoku puzzle is unsolvable).
  • Game development - Python might be a good choice using PyGame - e.g. classic arcade games like space invaders would involve looking at game loops, user input events, screen updates, etc.
  • Low-level/system-level programming - That could be something like picking up an Arduino and doing some hardware-related stuff in C or C++, or maybe looking into low-level network programming using sockets (e.g. creating a 'chatroom' client-server app)
  • Server-side Web apps - learning how to create a web app driven by a web server using a language like C#, Python or PHP.
  • Client-side web apps - I.e. beyond just the basics of HTML/CSS/JavaScript and learning to do build much more sophisticated apps using a framework like React or Angular. (It's probably a good idea to learn to make server-side web apps first before doing this though)
  • Build an app on top of someone else's free, public web API - https://apilist.fun/ (e.g. I saw an API in that list which has tonnes of data about football - might be fun/interesting if you like football. There was another one food and recipe data, etc.)
  • If you own any devices at home which have their own API or SDK you could try building something for those. For example, Amazon Echo has an SDK which allows you to create your own Alexa Skill.


Also think about which language/s you'd like to use. Any of the popular mainstream languages are very worthwhile, but the language might also steer you in a particular direction, for example, C and C++ would steer you in a direction of doing more low-level/system-level programming involving fiddling about with memory/bits/bytes, whereas Java and C# hide away much of the low-level stuff and also have a bunch of big frameworks for making more sophisticated apps instead.
Hiya, thank you so much! All these ideas sound really exciting. Also glad to hear Python game projects can be used for portfolios- I actually made a PyGame version of Space Invaders for my A Level.

In terms of keeping and sharing the portfolio, I've heard GitHub would be a good idea- do you know anything about that?

Thanks for a really great answer
0
reply
winterscoming
Badges: 19
Rep:
?
#5
Report 11 months ago
#5
(Original post by TeacupAndTragedy)
Hiya, thank you so much! All these ideas sound really exciting. Also glad to hear Python game projects can be used for portfolios- I actually made a PyGame version of Space Invaders for my A Level.

In terms of keeping and sharing the portfolio, I've heard GitHub would be a good idea- do you know anything about that?

Thanks for a really great answer
Glad that's been useful And the A-Level project sounds like a really good one to put up there. Anything really which you feel showcases your programming skills to a potential employer, or even just shows where you were at a particular point in time (your ability to think computationally, solve problems, write "good code", use different languages and tools) is very much worth having!

GitHub would be an excellent idea! Git is the name of a source control system - I use that quite a lot, and sometimes GitHub, although there's other sites which do the same such as GitLab and BitBucket (probably others too). At first it might seem similar to cloud storage like OneDrive or GoogleDrive, but the way it actually stores files is a lot better than that - the most important feature is that it remembers a complete history of files, which isn't lost or overwritten when you add, change or delete files. That helps when more than one person is changing the same project/files too, which is why it's used a lot by dev teams.
(Some good videos here: https://www.youtube.com/watch?v=8oRj...8ofwRw0PqUnkVH )

If you create an account on GitHub, then you can create a new git repository for each project you work on, so putting your A-Level project into its own repository would be a really good start just to get familiar with it. Maybe add a readme.md file so that you can put some words with it too - that's good if an employer might see it at some point, since it gives them some context about what the project is all about.

You will need an app and/or the git command-line tools. The GitHub Desktop app is fine, but a lot of popular code editors can use it as well if you have the commandline tools installed - e.g. Visual Studio, PyCharm, etc. (I find graphical UI git apps and plugins are a lot more user-friendly than typing commands by hand, although that's the "proper" way to do stuff, so it's worth learning eventually). Git needs to clone the repository from GitHub (i.e. literally make an exact copy of it on your local computer which git can track), then use git to commit any added/modified/files into that clone (i.e. create an entry in history - like a snapshot), and finally push the commits (new history) from the clone up to GitHub.

Git will never record un-committed changes into history nor push those up to GitHub. It's a change-tracking tool, but you need to remember to tell it to create those entries in history each time. It's a good habit to remember to commit and push as often as you can, so that each entry in your history stays small.

The reason this is better than cloud storage is that you get a permanent history of every change in every commit you ever create, even create multiple timelines (called branches) if you want to. e.g. Have you ever made a change to your code which broke stuff and you couldn't remember what changed? Have you ever found yourself creating lots of copies of the same file/s into multiple different folders so that you can do some experimental stuff without breaking the original copy that works? Have you ever changed some stuff and then wanted to go back to how things were earlier because you've changed your mind? etc. It's hard to do these things without source control because changes on a normal computer file systems on Mac/Windows/etc just overwrite whatever existed before, so there's never any history or old snapshots to go back to or compare with.
Last edited by winterscoming; 11 months ago
0
reply
X

Quick Reply

Attached files
Write a reply...
Reply
new posts
Back
to top
Latest
My Feed

See more of what you like on
The Student Room

You can personalise what you see on TSR. Tell us a little about yourself to get started.

Personalise

Current uni students - are you thinking of dropping out of university?

Yes, I'm seriously considering dropping out (17)
20%
I'm not sure (2)
2.35%
No, I'm going to stick it out for now (23)
27.06%
I have already dropped out (3)
3.53%
I'm not a current university student (40)
47.06%

Watched Threads

View All