This short resource list/autodidactic curriculum has been created in the hopes that it will better prepare interns for full integration into the Software Development Industry. As an intern it is important to think about the extent of your current knowledge and where you can improve, as well as the expectations you must set for yourself in terms of learning and growth. A professional setting can help better shape ones perspective as to what is required. This internship is an opportunity to grow not only in a careerwise manner but as professional in the industry. To this extent it is expected that time will be spent thoroughly exploring and attempting to understand the many aspects of your craft as it pertains not only to your day-to-day activities but your overall understanding as well.
Basic etiquette
- Respect other peoples time
- Ask your question in your opening statement state it clearly
Think about the nature of the problem you are having. What do you know? What don't you know? What led you to the problem. Provide this information when asking for help
Never underestimate the power of a good question.
- Think about the different ways in which you can ask your question.
- Think if you need to be more specific or more general.
- Google and Stack Overflow are magical and often times comprehensive resources for those willing to search
- Don't be afraid to dive a few pages deep
Time Spent (Am I putting in enough time? Am I using my time efficiently?)
Focus/Method (What should I focus on? Where are my problem points? How will I go about my learning?)
Iterative Learning (Look into a topic but don't dive too deeply too fast; being well rounded often means we have to first sacrifice depth of learning for breadth until we can coming back to a topic we have gone over before)
- Classes/Interface
- Collections/Streams
- API Primitive Types and Arrays
- Basics of Functional Java (Functional interfaces, Lambdas, ect)
- OOP Fundamentals and how they are applied in Java
- Java Build Management Tools (Maven, Gradle)
- Testing in Java with JUnit/TestNG
- Oracle: Oracle Java Getting Started Trail
- Java IDE (the best): Intellij
- Anything on Baeldung is usually very good: https://www.baeldung.com/java-tutorial
- Java Collections API -- Oracle
- Java Collections API - Baeldung
- Reference I made moving from JavaScript -> Java
- Maven Getting Started
- Gradle Getting Started
- Testing Beginner Tutuorial
- Testing Best Practices
- Arrays and their methods
- Objects and their methods
- Classes
- Functions (defintions, arrow functions, callback functions, higher order functions)
- Closures
- Prototypal inheritance
- Primitives
- Imports
- Asynchronous Coding (Async and Await, .then())
- HTTP requests(HTTP methods,AJAX requests, Axios, HTTP headers)
- Interacting with the DOM
- Local/Session storage
- NPM
- require vs import
- system I/O
- Node STLs
- Express framework for REST APIs
- Eloquent JavaScript <- very good to start with and free online... the async await chapters leave a little to be desired
- JavaScript the Weird Parts <-- lets get into how Javascript operates on a fundamental level
- MDN's Reintroduction to JavaScript <-- excellent resource for those already familiar with JS but who may missed some things along the way
- DOM -- MDN
- Node -- Code with Mosh
- Node -- Traversy Crash Course
- Express Documentation
- Async and Await
- Binary Search Tree
- HashMap
- Arrays
- LinkedLists
- Graphs
- Stacks
- Queues
- Merge Sort
- Binary Search
- Heaps
- Priority Queues
- How to implement, why to use, Big(O) space and time of (read, write, view, delete) If Big(O) is new research
Don't forget youtube is a great friend here look up information by topic and dig in! Learning how to research properly is a large part of what makes a software developer successful.
Don't forget to refer to the code challange project I shared in the email in which this resource was also shared as these are the level of questions which are expected to be asked and fall in the domain of DSA learning.
- Knowledge of Tools (PGAdmin, MYSQL Dashboard, etc)
- How to make SELECTions with WHERE conditions (TEXT, CONTAINS, TIMESPAN, EQUALS)
- Basic aggregate functions (COUNT, AVG, SUM, MAX, MIN, etc)
- How to SELECT rows based on DISTINCT columns
- The use of GROUP BY and its WHERE equivalent HAVING
- The use of ORDER BY
- The use of LIMIT and OFFSET for pagination
- How to CREATE tables
- How to enforce column constraints (NOT NULL, UNIQUE, etc)
- What are foreign keys
- What are ON DELETE and ON UPDATE (RESTRICT, CASCADE, SET NULL, NO ACTION) constraints when to use them
- How to DROP a table
- How to DELETE rows in a table
- How to UPDATE rows in a table
- How to JOIN tables on foreign keys (INNER JOIN, OUTER JOIN, LEFT/RIGHT JOIN)
- Mode SQL Tutorial <-- very good free tutorial
- LearnSQL <- Paid but I can't think of a better resource
- HackerRank SQL Challenges
- Knowledge of the Linux filesystem (/bin, /boot, /dev, /etc, /home, /lib, /sbin, /root)
- Basic commands (mv, rm, cat, grep, touch, find, cd, cp, ls, echo, chmod, chown, tail, head)
- File permissions
- User groups
- How to act as super user
- How to run process for CLI in the background (&)
- How to view running processes (jobs)
- How to kill a process (pkill)
- Pipping commands (|)
- The redirection operator (> >>)
- How to use apt install
- Great book to get started with Linux CLI
- Free Linux Tutorial
- Another Free Linux Tutorial
- Process Administration and Monitoring Linux <-- Software Support Devs check this out!!
- BASH Scripting Guide
- Linux Trouble Shooting Guide <-- Software Support Devs check this out!!
- Analyzing Logs <-- Software Support Devs check this out!!
These next three resources are not free but I have used them and they are very good
-
Cracking the Code Interview -- coding interview book in Java:
-
Jetbrains Academy -- offers java course in bite size pieces they are the makers of Intellij IDEA:
-
Pluralsight -- kind of a one stop shop for technical course and tutorials over a wide range of topics kind of pricey but very well curated in my opinion: