Skip to content

gravelcycles/ieee-program

 
 

Repository files navigation

The Internet-Taught Software Engineer - A Student-to-Student Class

Note

Class Author: David Grossman

This is the time to take control of educating yourself. If your goal is to get a job in Silicon Valley, become a top-notch researcher, or start a startup, learning to teah yourself new things is key. As part of the Software Engineering Club, you are joining a group of self-motivated students interested in understanding the ins and outs of computers and software systems.

This course will help you with 2 things:

  1. Prepare for technical interview questions. A key part in becoming a quality software engineer is getting your first internship or job. We will learn and practice the key knowledge that you will need in the general software technical interview.
  2. Expose you to interesting software engineering topics. As Software Engineers, we develop good understanding of how computers work and how they will work in the near future. We will touch on interesting topics that you might not be exposed to in your courses and give you new concepts to explore on your own.

Communication

Join our Facebook page https://www.facebook.com/groups/UMACM/ for updates on the course! As the semester gets going and if there's interest, we can work on a Software Engineering Class specific communication method.

Table of Contents

  • Week 0: September 4th, 2017
    1. How to Get a Job in Silicon Valley
    2. Algorithmic Complexity & Basic Data Structures
  • Week 1: September 25th, 2017
    1. Hash Tables & Linked Lists
    2. Machine Learning 101
  • Week 2: October 2nd, 2017
    1. Stacks and Queues
    2. Functional Programming
  • Week 3:
    1. Trees and Graphs
  • Week 4:
    1. Bit Manipulation
    2. Operating Systems 101
  • Week 5:
    1. Recursion and Dynamic Programming
    2. Linear Algebra Review
  • Week 6:
    1. Sorting and Searching
  • Week 7:
    1. Math and Logic Puzzles
    2. System Desing and Scalability
  • Week 8:
    1. Object-Oriented Design
    2. Concurrency: Threads and Locks
  • Week 9:
    1. BigData and MapReduce
    2. Parallel Programming
  • Week 10:
    1. Testing
    2. NP-Completeness and Theory of Computing
  • Week 11:
    1. Review

Acknowledgements:

  • There are many other sources I have used to create this guide and I am very thankful for all the people that have put them together. I have heavily used resources and structure from @jwasham's Google Interview University guide and prior development by @giovannibonin. =======
  • Week 0
  • Week 1
    1. About Silicon Valley, Google, Facebook, and Startups - Motivation
    2. Interview Process & General Interview Prep
      • Emacs and vi(m)
      • Unix and Command Line Tools
  • Week 2
    1. Algorithmic complexity / Big-O / Asymptotic analysis
    2. An Overview of Data Structures and Algorithms
  • Week 3 2. Basic Algorithms: Binary Search and Sorting 3. Recursion
  • Week 4
    1. Network Flows
    2. Linear Programming
    3. Machine Learning
    4. Information theory
    5. Cryptography
    6. Networking
    7. Computer Security
    8. Parallel Programming
    9. And much, much more.
  • Week 5
    1. Divide and Conquer & Sorting
    2. Graph Search, Shortest Paths, and Data Structures
  • Week 6
    1. Heaps and Balanced Trees
    2. Dynamic Programming
  • Week 7
    1. Knapsack problem and More Dynamic Programming
    2. Shortest Paths Revisited, NP-Complete Problems and What To Do About Them
  • Week 8
    1. Bitwise operations, Discrete Mathematics, and NP Completeness and Computability
    2. Caches, Processes and Threads, and other topics
  • Week 9
    1. Testing and System Design
    2. Putting it all together and Review
  • Week 10
    1. Practice

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%