](https://pubs.opengroup.org/onlinepubs/009695399/basedefs/math.h.html)
127 |
128 |
129 | - [ ] **[C++](https://www.cs.nmsu.edu/~jcook/tags/c/c++/)** (You can try **[Python](https://docs.python.org/3/tutorial/index.html)** for same topics)
130 | > Used in almost everything from Games to Browsers to Machine learning and beyond
131 | - [Everything mentioned in C](https://google.github.io/styleguide/cppguide.html)
132 | - [namespaces](https://learn.microsoft.com/en-us/cpp/cpp/namespaces-cpp?source=apeman)
133 | - [Classes](https://learn.microsoft.com/en-us/cpp/cpp/class-cpp?source=apeman) and [Objects](https://en.cppreference.com/w/cpp/language/object)
134 | - [Access Controls : Public, Private, Protected](https://learn.microsoft.com/en-us/cpp/cpp/member-access-control-cpp?source=apeman)
135 | - [Member Functions](https://learn.microsoft.com/en-us/cpp/cpp/overview-of-member-functions?source=apeman) and [Friend Functions](https://learn.microsoft.com/en-us/cpp/cpp/friend-cpp?source=apeman)
136 | - [Function Overloading](https://learn.microsoft.com/en-us/cpp/cpp/function-overloading?source=apeman)
137 | - [Constructor](https://learn.microsoft.com/en-us/cpp/cpp/constructors-cpp?source=apeman) and [Destructors](https://learn.microsoft.com/en-us/cpp/cpp/destructors-cpp?source=apeman)
138 | - [Inheritence](https://learn.microsoft.com/en-us/cpp/cpp/inheritance-cpp?source=apeman), [Polymorphism](https://www.cs.nmsu.edu/~jcook/posts/cpp-polymorphism/)
139 | - [Templates](https://learn.microsoft.com/en-us/cpp/cpp/templates-cpp?source=apeman)
140 |
141 | ## Data Structures
142 |
143 | - **[Arrays](https://www.digitalocean.com/community/tutorials/how-to-work-with-arrays-in-ruby)**
144 | - **[Linked Lists](https://www.cs.cmu.edu/~adamchik/15-121/lectures/Linked%20Lists/linked%20lists.html)**
145 | - **[Skip Lists](https://www.cs.cmu.edu/~ckingsf/bioinfo-lectures/skiplists.pdf)**PDF
146 | - [Skip-Lists done right](http://ticki.github.io/blog/skip-lists-done-right/)Suggested Reading
147 | - **[Hash Tables](https://www.cs.cornell.edu/courses/cs3110/2014fa/lectures/13/lec13.html), [2](https://www.eecs.umich.edu/courses/eecs380/ALG/hash_tables.html)**
148 | - **stack** and **queue** and **set**
149 | - [ ] **[Trees](http://math.hws.edu/eck/cs225/s03/binary_trees/)** and **Tries**
150 | - [ ] Self Balancing Trees (BST, AVL, Splay)
151 | - [ ] Red-Black Trees
152 | - [ ] Segment Trees
153 | - [ ] **[Graphs](https://www.softwaretestinghelp.com/graph-implementation-cpp/) , [Some Code](http://www-h.eng.cam.ac.uk/help/tpl/talks/C++graphs.html)**
154 | - [ ] Adjacency matrix vs Adjacency list
155 |
156 | ## [Algorithms](https://xlinux.nist.gov/dads/)
157 |
158 | - [ ] **Searching**
159 | - [ ] Binary Search
160 | - [ ] Priority Queues
161 | - [ ] **[Sorting](https://en.wikipedia.org/wiki/Sorting_algorithm)**
162 | - [ ] Merge Sort
163 | - [ ] Quick Sort
164 | - [ ] Insertion Sort
165 | - [ ] Selection Sort
166 | - [ ] **Graph Traversal**
167 | - [ ] Breadth First Search
168 | - [ ] Depth First Search
169 | - [ ] Dijkstra's Algorithm
170 | - [ ] Bellman Ford (Cycle detection & Negative edges)
171 | - [ ] Shortest Paths
172 | - [ ] Minimum Spanning Trees
173 | - [ ] **space-time Complexity**
174 |
175 |
176 | ## [Design and Analysis of Algorithms](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/video_galleries/lecture-videos/)
177 | - [ ] Book Recommendations:
178 | - **The Algorithm Design Manual** by Steven Skiena
179 | - **Algorithms** by Jeff Erickson
180 |
181 | ## Artificial Intelligence
182 |
183 | - [ ] **Knowledge Representation** and **Reasoning**
184 | - [ ] **First Order Logic**
185 | - Predicate Logic
186 | - Forward Chaining and backward chaining
187 | - [ ] **State Space**
188 | - [State Space Search](https://formal.kastel.kit.edu/~beckert/teaching/Einfuehrung-KI-WS0304/04ProblemSolving.pdf)
189 | - [ ] **Search**
190 | - [Simulated annealing](https://en.wikipedia.org/wiki/Simulated_annealing)
191 | - [Hill Climbing](https://www.javatpoint.com/hill-climbing-algorithm-in-ai)Must know
192 | - [A*](https://www.ics.uci.edu/~kkask/Fall-2016%20CS271/slides/03-InformedHeuristicSearch.pdf)Must know
193 | - [MinMax](http://web.mit.edu/sp.268/www/gamesearch.pdf)
194 | - [ ] Bayes' Theorem of Probability
195 | - [ ] **[Neural Networks](https://stackoverflow.com/questions/2019056/getting-a-simple-neural-network-to-work-from-scratch-in-c)**
196 | - Weights and Layers (Neural Networks)
197 | - Gradient Descent
198 | - Convolutional neural networks(https://towardsdatascience.com/convolutional-neural-networks-from-the-ground-up-c67bb41454e1)
199 | - [ ] [Backpropagation](http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html)
200 | - [ ] [Game Dev Basics](https://sheepolution.com/learn/book/contents)
201 |
202 | ## Computer Science - 3
203 |
204 | ## DBMS and SQL
205 | [FCC quick commands](https://www.freecodecamp.org/news/basic-sql-commands/) | [Graphical view](https://www.guru99.com/sql-commands-dbms-query.html) | [ALL SQL Commands](https://www.postgresql.org/docs/17/sql-commands.html)
206 | - [ ] **[SQL](https://www.javatpoint.com/sql-tutorial)**
207 | - [ ] **Data Definition Language**
208 | - [CREATE](https://www.1keydata.com/sql/sqlcreate.html)
209 | - [DROP](https://www.1keydata.com/sql/drop-table.html)
210 | - [ALTER](https://www.1keydata.com/sql/sql-alter-table.html)
211 | - [TRUNCATE](https://www.1keydata.com/sql/sqltruncate.html)
212 | - [ ] **Data Query Language**
213 | - [SELECT](https://www.1keydata.com/sql/sqlselect.html)
214 | - [ ] **Data Manipulation Language**
215 | - [INSERT](https://www.1keydata.com/sql/sqlinsert.html)
216 | - [UPDATE](https://www.1keydata.com/sql/update.html)
217 | - [DELETE](https://www.1keydata.com/sql/sqldelete.html)
218 | - [ ] **Data Control Language**
219 | - [GRANT](https://www.1keydata.com/sql/sql-grant.html)
220 | - [REVOKE](https://www.1keydata.com/sql/sql-revoke.html)
221 | - [ ] **Transction Control Language**
222 | - [COMMIT](https://www.1keydata.com/sql/sql-commit.html)
223 | - [ROLLBACK](https://dev.mysql.com/doc/refman/8.0/en/savepoint.html)
224 | - [SAVEPOINT](https://www.postgresql.org/docs/current/sql-savepoint.html)
225 | - [ ] **AGGREGATE FUNCTIONS**
226 | - [COUNT](https://www.1keydata.com/sql/sqlcount.html) | [SUM](https://www.1keydata.com/sql/sum-function.html) | [AVG](https://www.1keydata.com/sql/sql-average.html) | [MAX](https://www.1keydata.com/sql/max-function.html) | [MIN](https://www.1keydata.com/sql/min-function.html)
227 | - [ ] **JOINS**
228 | - [FULL OUTER JOIN](https://www.ibm.com/docs/en/db2-for-zos/12?topic=jdfmtot-full-outer-join)
229 | - [INNER JOIN](https://www.ibm.com/docs/en/db2-for-zos/12?topic=table-inner-joins)
230 | - [LEFT JOIN](https://stackoverflow.com/questions/5706437/) | [RIGHT JOIN](https://stackoverflow.com/questions/5706437/)
231 | - [NATURAL JOIN](https://docs.oracle.com/javadb/10.6.2.1/ref/rrefsqljnaturaljoin.html)
232 | - [LEFT OUTER JOIN](https://www.1keydata.com/sql/left-outer-join.html)
233 | - [RIGHT OUTER JOIN](https://docs.oracle.com/javadb/10.6.2.1/ref/rrefsqlj57522.html)
234 | - [ ] **SUBQUERIES**
235 | - [Subqueries](https://www.ibm.com/docs/en/qmf/13.1.0?topic=ddfmtuss-creating-subquery-retrieve-data-from-more-than-one-table)
236 | - [ ] **WINDOW FUNCTIONS**(Optional) Advanced SQL
237 | - [Window Functions](https://mode.com/sql-tutorial/sql-window-functions)
238 |
239 | - **[DataBase Management Systems](https://www.javatpoint.com/dbms-tutorial)**
240 | - Entity-Relationship model.
241 | - [ ] **Integrity Constraints**
242 | - Primary Key and Foreign key
243 | - Composite keys
244 | - All other types of keys
245 | - [ ] Normal Forms : 1NF to 4 NF
246 | - [ ] File Organization.
247 | - [ ] Indexing ([B- Trees and B+ Trees](https://www.javatpoint.com/b-tree-vs-bplus-tree))
248 | - [ ] **Transactions and Concurrency Control**
249 | - Conflict Serializability
250 | - Locking
251 | - ACID | BASE
252 | - Database security
253 | - SQL Injection
254 | - Flat file / document database
255 | - Object / JSON based database
256 |
257 | ## [Operating Systems](http://pages.cs.wisc.edu/~remzi/OSTEP/)
258 | - The Boot Process
259 | - [ ] **Processes and Threads**
260 | - Process Control Block
261 | - Dispatcher and Scheduler
262 | - [ ] **Inter Process Communication**
263 | - Mesage Passing
264 | - Shared Memory
265 | - [ ] **Scheduling Algorithms**
266 | - Round Robin.
267 | - Shortest Remaining Time First.
268 | - Least Recently Used.
269 | - [ ] **Deadlocks**
270 | - MutEx and Locks
271 | - Semaphores
272 | - Banker's Algorithm
273 | - [ ] **Memory Management**
274 | - Paging and Page tables
275 | - Segmentation
276 | - First Fit, Next Fit, Best Fit
277 | - Non-continuous Allocation
278 | - [ ] **Virtual memory**
279 | - Page Faults
280 | - Page Replacement Algorithms
281 | - Belady’s Anomaly
282 | - [ ] **[IO Scheduling](https://en.wikipedia.org/wiki/I/O_scheduling)**
283 | - Shortest Seek Time First
284 | - Disk Scheduling Algorithms
285 | - [ ] **File Systems**
286 | - File Allocation Tables.
287 | - [ ] **OS Security**
288 | - Firewall
289 | - Malware and Antiviruses
290 | - [ ] [Unix commands](http://www.ee.surrey.ac.uk/Teaching/Unix/)
291 | - [ ] Multithreading and Context Passing in Programming languages
292 |
293 | ## Computer Networks
294 |
295 | - [ ] **Layers of TCP and OSI**
296 | - Application.
297 | - Presentation.
298 | - Session.
299 | - Transport.
300 | - Network.
301 | - Data.
302 | - Physical.
303 |
304 | - [ ] **Flow and Congestion Control**
305 | - Flow Control
306 | - Congestion Control
307 | - Error Control
308 |
309 | - [ ] **Routers and Routing Algorithms**
310 | - DHCP and static routing
311 | - DHCP | ICMP
312 | - Bellman Ford
313 | - Round Robin and others
314 |
315 | - [ ] **UDP and Sockets**
316 |
317 | - [ ] **IPv4 | IPv6**
318 |
319 | - [ ] **Autonomous Systems**
320 | - [Border Gateway Protocol](https://www.cloudflare.com/learning/security/glossary/what-is-bgp/)
321 | - OSPF
322 |
323 | - [ ] **Application Layer Protocols**
324 | - HTTP | FTP
325 | - DNS | SMTP
326 | - Email MIME Types | POP | IMAP
327 |
328 | - [ ] **Cloud Computing**
329 | - SAAS | PAAS | IAAS (AAS : As A Service)
330 | - Full and Para Virtualization : KVM/QEMU
331 | - Virtual Machines and Hypervisors ( Bare Metal | Hosted )
332 | - Clones | Snapshots | Scaling
333 |
334 | ## Software Engineering
335 |
336 | - [ ] **Software development models**
337 | - Waterfall
338 | - Spiral
339 | - Iterative
340 | - Agile
341 |
342 | - [ ] **Software Cost Estimation**
343 |
344 | - [ ] **COCOMO Model**
345 |
346 | - [ ] **Risk Management**
347 |
348 | - [ ] **Software Requirement**
349 | - Software Requirement Specifications
350 | - Data Flow Diagrams
351 |
352 | - [ ] **Software Quality**
353 | - ISO standards 9001, 14001
354 | - SEICMM
355 | - Six Sigma
356 |
357 | - [ ] **Software Design**
358 | - Software Design Principles
359 | - **Coupling and Cohesion**
360 | - Object-Oriented Design
361 | - User Interface Design
362 |
363 | - [ ] **Testing**
364 |
365 | ## Computer Science - 4
366 | _You will need these when you make projects_
367 |
368 | ## Cryptography and Network Security
369 |
370 | - [ ] **[Encryption Algorithms](https://pdf.sciencedirectassets.com/280203/1-s2.0-S1877050916X00026/1-s2.0-S1877050916001101/main.pdf)**
371 | - DES, AES, Blowfish, Whirlpool, One Time Pad
372 | - Avalanche effect, Entropy
373 | - [ ] **Hashing Algorithms**
374 | - SHA family, MD5
375 | - [ ] **Key Distribution**
376 | - RSA, Kerberos
377 | - [ ] **[Digital Signatures](https://cloud.google.com/kms/docs/digital-signatures#:~:text=A%20digital%20signature%20is%20a,a%20signature%20over%20raw%20data)**
378 | - [Message Digest](https://www.ibm.com/docs/en/ibm-mq/7.5?topic=concepts-message-digests)
379 | - [ ] **Compression**
380 | - [History](https://www.hanshq.net/zip.html#huffman).
381 | - [ ] **Firewalls**
382 | - [ ] **Steganography**
383 | - [ ] **Network Security**
384 | - [Honeypots](https://en.wikipedia.org/wiki/Honeypot_(computing))
385 | - [Man in the middle attacks](https://owasp.org/www-community/attacks/Manipulator-in-the-middle_attack)
386 | - [DDOS prevention](https://www.researchgate.net/figure/DDoS-Mitigation-Module_fig3_220939734)
387 | - [SSL and TLS](https://www.ibm.com/docs/en/ibm-mq/7.5?topic=mechanisms-cryptographic-security-protocols-tls-ssl)
388 |
389 |
390 | ### Data Science and Machine Learning
391 |
392 | - [ ] **[Bias and Variance](https://svivek.com/teaching/lectures/slides/loss-minimization/bias-variance.pdf)**
393 |
394 | - [ ] **Supervised Learning**
395 | - [ ] [Classification](https://cogitoai.home.blog/2019/08/21/what-is-classification-in-machine-learning/)
396 | - [ ] [Regression](https://www.topcoder.com/thrive/articles/introduction-to-linear-regression)
397 |
398 | - [ ] **Un-supervised Learning**
399 | - [ ] [Clustering](https://scikit-learn.org/stable/modules/clustering.html)
400 | - [ ] [k-Nearest Neighbours](https://web.iitd.ac.in/~bspanda/KNN%20presentation.pdf)
401 |
402 | - [ ] **[Image Processing](https://homepages.inf.ed.ac.uk/rbf/HIPR2/wksheets.htm)**Worth learning
403 | - [Transformation](http://www.it.hiof.no/~borres/j3d/math/twod/p-twod.html) and [Translation](https://homepages.inf.ed.ac.uk/rbf/HIPR2/translte.htm)
404 |
405 |
406 | ## Web Development
407 | > You can study Web Development from [Mozilla Developer Network Website](https://developer.mozilla.org/en-US/docs/Web/Tutorials).
408 |
409 | - [MDN Getting Started Guide](https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web)
410 | - [ ] **Front-End**
411 | - [HTML5](https://developer.mozilla.org/en-US/docs/Learn/HTML)
412 | - [CSS3](https://developer.mozilla.org/en-US/docs/Learn/CSS)
413 | - [JavaScript](https://developer.mozilla.org/en-US/docs/Learn/JavaScript)
414 | - [Web Forms](https://developer.mozilla.org/en-US/docs/Learn/Forms)
415 | - [Browser APIs](https://developer.mozilla.org/en-US/docs/Web/API)
416 | - [Accessibility](https://developer.mozilla.org/en-US/docs/Learn/Accessibility)
417 | - [Tools and Testing](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing)
418 | - [DNS and Domain Names](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_domain_name)
419 | - [JSON and other formats](https://www.zionandzion.com/json-vs-xml-vs-toml-vs-cson-vs-yaml/) and [YAML](https://yaml.org/)
420 |
421 | - [ ] **BackEnd** Choose any language
422 | - [Golang](https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/) OR [Todd Mcleod's Udemy Course](https://www.udemy.com/course/learn-how-to-code/)
423 | - [Python Flask](https://flask.palletsprojects.com/en/stable/)
424 | - [Git internals](https://eagain.net/articles/git-for-computer-scientists/)
425 | - Messaging Queues
426 |
427 |
428 | ## [Computer Graphics](https://www.cs.uic.edu/~jbell/CourseNotes/ComputerGraphics/)
429 |
430 | > Not mandatory, just get the overview
431 |
432 | - [ ] **Concepts and principles**
433 | - [OpenGL basics : lines, planes, vertex and edges](https://learnopengl.com/)
434 | - [Pixels](http://math.hws.edu/graphicsbook/c2/s1.html)
435 | - [Rendering](https://github.com/ssloy/tinyrenderer/wiki)
436 | - [Shading](https://www.cs.uic.edu/~jbell/CourseNotes/ComputerGraphics/LightingAndShading.html)
437 | - [Texturing](https://www.cs.uic.edu/~jbell/CourseNotes/ComputerGraphics/TextureMapping.html)
438 | - [Ray Tracing](https://raytracing.github.io/books/RayTracingInOneWeekend.html)
439 | - [Raycasting](http://web.cs.wpi.edu/~matt/courses/cs563/talks/powwie/p1/ray-cast.htm)
440 |
441 |
442 | After you are done with all this and want to make projects, check out [Projects you can make](https://github.com/apeman/awesome_computer_science/blob/master/what-should-i-code.md)
443 |
444 | ## LICENSE
445 |
446 | [Mozilla-Public-License](./LICENSE.txt)
447 |
--------------------------------------------------------------------------------
/what-should-i-code.md:
--------------------------------------------------------------------------------
1 | # Projects you can make after learning programming
2 |
3 | Even though I have mentioned these under specific languages, you can make anything in any language of your choice.
4 |
5 | ## Assembly
6 | - Bootloader
7 | - OS
8 | - Games
9 | - Malware :)
10 |
11 | ## CXX
12 | - Task scheduler
13 | - Rainmeter-ish tool
14 | - Your own UNIX like short commands
15 |
16 | ## Python
17 | - Your personal website using Flask
18 | - Attendance register
19 | - File Explorer
20 | - Image Viewer
21 |
22 | ## Golang
23 | - Gfycat Clone (file upload, saving files, return files to user)
24 | - TitanPad Clone (TCP or UDP sockets)
25 | - Event management website
26 | - Local place discovery website
27 | - Messaging Queue
28 |
29 | ## CRUD Apps (Create Read Update Delete)
30 | - Wikipedia clone
31 | - News portal / Blog
32 | - Notes taking app
33 | - URL Shortener
34 | - Soundcloud Clone
35 | - Live ticketing website using sockets
36 |
37 | ## Lua
38 | - Games ( Love2D, Solar SDK )
39 | - GUI utility widgets using LuaIUP
40 | - Operating System (Virtual)
41 |
42 | ## Image Processing
43 | - Make images using mathematical formulas
44 | - Image editor
45 |
46 | ## JavaScript
47 | - Gradient Generator
48 | - Image editor using canvas
49 | - Browser Extensions
50 |
51 | ## Misc
52 | - Google Input Tools OFFLINE replacement
53 | - Visualize classes / functions as a map or 3D space
54 |
--------------------------------------------------------------------------------