DEV Community

loading...
Cover image for 10 Advanced Projects to Build in 2021

10 Advanced Projects to Build in 2021

hb profile image Henry Boisdequin ・5 min read

I've curated a list of 10 advanced projects to complete in 2021. Most of these are systems programming projects, but there are a few other AI and networking projects in the list. When I say these projects are advanced, they are advanced. I would recommend being very familiar with the programming language you choose to use to tackle one of these projects. Let's dive right into it!

1. Programming Language

Alt Text

Creating a programming language, interpreted or compiled, is no easy feat. Some programming languages include: Python, Rust, Javascript, C++, Elixr, and many more. For this project, design and implement an interpreted or compiled programming language from scratch. If you would like this project to not only be a 2-week thing, think about the problems you have with certain programming languages, and how to fix them. For example, Rust is an awesome programming language that has memory safety and speed. The downside to Rust is its learning curve. I would try to create a programming language that is fast, memory safe, but would be easier to learn than Rust.

Tutorials (if you get stuck):

Golang: https://interpreterbook.com/
Rust: https://arzg.github.io/lang/
Python: https://youtu.be/Eythq9848Fg?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD
General: https://online.stanford.edu/courses/soe-ycscs1-compilers

2. Toy Database/Key, Value Store

Alt Text

For this project, create a toy database or a key, value store. If you would like some more practice with how databases work before building a real one, I would recommend creating a key, value store, a Redis clone, or a Memcached clone. As these projects are smaller than a full NoSQL/SQL database, these would be great intermediate systems projects. Once you feel ready, create a toy database. This database can be whatever you want: SQL or NoSQL, relational or nonrelational, the list goes on.

Tutorials (if you get stuck):

Python (beginner-friendly): https://www.freecodecamp.org/news/how-to-write-a-simple-toy-database-in-python-within-minutes-51ff49f47f1/
General: https://www.coursera.org/specializations/database-systems

3. Implement the TCP Protocol

Alt Text

In this project, implement the TCP protocol from scratch. If you don't know what the TCP protocol is, that would be the first step. I would recommend reading this: https://tools.ietf.org/html/rfc793. As the TCP protocol is a more advanced protocol, if you would like to tackle something a little simpler, I would recommend implementing the FTP protocol which you can learn about here: https://en.wikipedia.org/wiki/File_Transfer_Protocol.

Tutorials (if you get stuck):

Rust: https://youtu.be/bzja9fQWzdA?list=PLqbS7AVVErFivDY3iKAQk3_VAm8SXwt1X
C++: https://youtu.be/WDn-htpBlnU?list=PLZo2FfoMkJeEogzRXEJeTb3xpA2RAzwCZ
Python (FTP): https://www.tutorialspoint.com/python_network_programming/python_ftp.htm
Node: https://www.digitalocean.com/community/tutorials/how-to-develop-a-node-js-tcp-server-application-using-pm2-and-nginx-on-ubuntu-16-04

4. Implement Biometric Authentication

Alt Text

For number 4, implement biometric authentication. If you didn't know, biometric authentication uses a user's unique biological characteristics to confirm their identity. Some examples of biometric authentication include: fingerprint, face recognition, eye recognition, and more. This project requires you to be proficient with AI and machine learning. You could extend this project by implementing biometric authentication in an attendance platform, fingerprint voting system, and more.

Tutorials (if you get stuck):

Python (face recognition): https://youtu.be/535acCxjHCI
Node (fingerprint): https://youtu.be/RLpeBil53bk?list=PLrUF5HNl_xIKDmlYxMXtnQywpbfByH07r

5. Concurrent Data Structure

Alt Text

For this project, create a concurrent data structure. If you don't have any ideas on which concurrent data structure to make, I find looking at old research papers on concurrent data structures useful (usually they have some pseudocode). This project requires you to know what concurrency is and have a general knowledge of data structures.

Tutorials (if you get stuck):

Rust (concurrent hashmap): https://youtu.be/yQFWmGaFBjk?list=PLqbS7AVVErFj824-6QgnK_Za1187rNfnl
General: http://www.cs.tau.ac.il/~afek/ConcurrentDS-MS04.pdf

6. Create an Operating System

Alt Text

This one is a fun one! This project is all about creating your own operating system from scratch. For this project, I would recommend that you use a performant language like Rust, C, or C++ as creating an OS can slow your computer down a little. You could make this operating as simple or as complex as you like. Some extra features you could include are: basic built-in apps like Notes, QuickTime Player, or a text editor, multitasking, and more.

Tutorials (if you get stuck):

Rust: https://os.phil-opp.com/
C: https://github.com/cfenollosa/os-tutorial
C++: https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System

7. Image Encryption using AES Algorithm

Alt Text

I have to admit, this one is pretty cool, I'll definitely be doing this one for my next project! In this project, create an image encryption tool using the AES algorithm. I found this blog post really helpful for understanding the AES algorithm: https://www.tutorialspoint.com/cryptography/advanced_encryption_standard.htm. You could extend this project by using your image encryption tool in some web applications like an Instagram clone.

Tutorials (if you get stuck):

General: https://link.springer.com/article/10.1007/s11227-019-02878-7

8. Create a Text Editor

Alt Text

For this project, your goal is to create a fully functioning text editor. Some examples of text editors: sublime text, notepad++, and more. You could create a text editor which is mainly focusing on programming (syntax highlighting, keyboard shortcuts, etc) like sublime or just a regular notepad (more subtitle for beginners) like notepad++.

Tutorials (if you get stuck):

Rust: https://www.philippflenker.com/hecto/
Java: https://www.geeksforgeeks.org/java-swing-create-a-simple-text-editor/
C: https://viewsourcecode.org/snaptoken/kilo/
Python: https://www.codespeedy.com/create-a-text-editor-in-python/
C#: https://youtu.be/e_ychG719Fk

9. Create a Browser Engine

Alt Text

Create a fully functioning browser engine. Make this browser engine allow for HTML, CSS, and JS files. You could make this project as complex or as simple as you want. For this project, I would focus on the design aspect as that is a big factor when choosing which browser to choose.

Tutorials (if you get stuck):

Rust: https://youtu.be/brhuVn91EdY?list=PLJbE2Yu2zumDD5vy2BuSHvFZU0a6RDmgb
Java: https://youtu.be/anoPsxasIBE

10. Create a Cryptocurrency

Alt Text

For this project, create a cryptocurrency. Some examples of cryptocurrencies include: Bitcoin, Ethereum, Dash, etc. Like all the previous projects, you choose how deep you want to go into this project. If you want to add more advanced features such as smart contracts, mining, and more.

Tutorials (if you get stuck):

Rust: https://youtu.be/vJdT05zl6jk?list=PLwnSaD6BDfXL0RiKT_5nOIdxTxZWpPtAv
Python: https://www.freecodecamp.org/news/create-cryptocurrency-using-python/
Elixir: https://shyr.io/blog/writing-blockchain-elixir
Typescript: https://lhartikk.github.io/


These are some pretty big projects! If you complete any of them, I would love to know how it went! Good luck if you want to tackle any of these projects! Thanks for reading!

Henry

πŸ“° Newsletter
🐱 GitHub
🐦 Twitter

Discussion (28)

pic
Editor guide
Collapse
perigk profile image
Periklis Gkolias

Thank you for the ideas Henry. Finally a text of ideas that doesn't contain a calculator or a todo-list :D

Collapse
nwmqpa profile image
Thomas Nicollet

To be honest, a calculator can be pretty challenging. I had to do one from scratch in my University, 3 weeks after entering computer science course. It was meant to be able to compute infinite number operations, on infinite base, with parenthesis and basic operations, in C pure

It was very interesting to make

Collapse
perigk profile image
Periklis Gkolias

It is indeed an interesting problem to solve, I was in the same position when started my university classes. And it is challenging algorithmically.

But that's it. You practice nothing else but algorithmic skills which is (fortunately or unfortunately) not the most important technical skills you will need in a software engineering job.

Thread Thread
nwmqpa profile image
Thomas Nicollet

I agree with you, from a job perspective.

From a learning and experimental perspective, I still think these projects have their place on this list, akin to a new language.

Collapse
jsears profile image
Jenn Sears

Or a chat clone

Collapse
hb profile image
Henry Boisdequin Author

Thanks, that means a lot!

Collapse
mumbere7 profile image
Mumbere Arnold

I was also to build a calculator once in my android programming classes and boy that is not easy and also a todo list in android is not easy especially when you have to implement all the functionalities of a todo list. Do not underestimate a project and over estimate your skills.

Collapse
rahxuls profile image
Rahul

I wanna build them all. Trying to get some free time to build them all.

Collapse
hb profile image
Henry Boisdequin Author

That's great, good luck! I'm curious, which language will you use for these projects?

Collapse
rahxuls profile image
Rahul

I gotta research lol

Thread Thread
hb profile image
Henry Boisdequin Author

I would recommend using Rust for these topics as it is easier to learn than a low-level language such as C or C++ but can also be used in low level as well as high-level applications. It's my favourite language!

Thread Thread
rahxuls profile image
Rahul

Ah men. I'm trying to learn React right now. After learning MERN Stack and then a bit of JAMStack. The I'm thinking to start with Rust. (Probably end of this year or next).

Meanwhile I'll look into if this can be done with front-endπŸ€ͺ

Thread Thread
hb profile image
Henry Boisdequin Author

Yes, that would be a great idea! I think you can use Node or Deno to create a programming language/key-value store/cryptocurrency/TCP/concurrent DS/image encryption but they won't be performant (to build for learning purposes). You could use MERN/the JAMStack to build the text editor! Good luck!

Thread Thread
rahxuls profile image
Rahul

Ah man. So much. But yes, ready for them.

Collapse
epsi profile image
E.R. Nurwijayadi • Edited

From that ten legend, what project have you ever finished πŸ€”?

Collapse
hb profile image
Henry Boisdequin Author

I’ve done the cryptocurrency and text editor! Hoping to do more!

Collapse
epsi profile image
E.R. Nurwijayadi

Awesomeeeeee!

Collapse
rmfranciacastillo profile image
Renato Francia Castillo

These ideas are great Weekend projects to take your programming skills to the next level! Thanks for the ideas Henry

Collapse
hb profile image
Henry Boisdequin Author

Thanks for reading!

Collapse
atsoamazed profile image
AT Will

This is a great list!

Collapse
hb profile image
Collapse
matijazx profile image
Matija X

This is very informative and useful article. Thanks!

Collapse
hb profile image
Henry Boisdequin Author

Thanks for reading!

Collapse
jscoder17 profile image
Jscoder17

WOAH!

Collapse
jscoder17 profile image
Jscoder17

Me about to do Js30 you solving all the world's problems.

Collapse
hb profile image
Henry Boisdequin Author

"A journey of a thousand miles begins with a single step"

Thread Thread
jscoder17 profile image
Jscoder17

DAMN IT! and you're inspiring your so cool! :3