A few weeks ago Toby asked me if I could join him for a 90 minute development workshop at NC State. The intended audience were freshmen and sophomores in Computer Science at State. Toby helped me prep up on the content and the scope of the presentation, and joining us during this workshop was Derek.
Around 30 students attended this workshop, and the event turned out to be very interactive. For me the experience was a lot of fun and nostalgic, and I had a great time talking to the wolf pack (students).
A lot of information/resources were presented in this workshop, and while I can’t share the presentation, Toby was generous to put together some of the more important resources that could be publicly shared. Please find them below, and if you are a Freshmen/Sophomore I hope that you find at least a few of these resources useful.
Freshmen year additional resources:
- Intro to CS & Basics
- Core Math
- Calculus: Single Variable: Differential and integral calc, emphasis on conceptual understanding and applications
- Coursera – Intro to Logic: Learn how to formalize information and reason systematically to produce logical conclusions.
Sophomore year additional resources:
- Data Structures and Algorithms
- MIT Intro to Algorithms: beginner-intermediate level course to introduce basic mathematical modeling, and only requires slight familiarity with Python
- Stanford Intro to Databases: Basics in how to store data – requires light programming background and a solid CS theory
- Data/Algorithms Part 1: essentials from Algorithms & Data Structures requiring very basic Java
- Data/Algorithms Part 2: building on Part 1 knowledge
- Eng Practicum = Internship program for rising Sophomores and rising Juniors: http://g.co/EngPracticum – applications open from approximately September – December
- Interview resources:
Junior year additional resources:
- Algorithms/Data Structures
- Computing for Data Analysis
- Deep Dives:
- Software Engineering Internship: http://g.co/sweintern – applications open from approximately September – December
Books & Available Resources
- Cracking the Coding Interview (HIGHLY Recommended)
- Programming Interviews Exposed: Secrets to Landing Your Next Job
- Programming Pearls by Jon Bentley
- Introduction to Algorithms by Thomas H. Cormen
- Google Spanner: Google’s Globally-Distributed Database
- Google Chubby
- Google Education: Guide for Technical Development
Some additional thoughts from one of the alumni:
- If you know anything about programming already, test out of CSC 116 and CSC 216 (Java I and II). Take a week, read through the text book and then talk to your adviser or the professor teaching the class that semester.
- Your adviser will try to talk you out of taking a heavy course load, push back on this, challenge yourself.
- Join at least one club that will expect you to code outside of class (Linux User’s Group, Programming Competitions, Aerial robotics, Underwater Robotics, et al.). You will meet some interesting people and get a feel for what you can do with your degree.
- Take some classes outside of your major. There are a lot of other fields that need software engineers.
- Don’t be afraid of taking graduate classes as an undergrad. The 590 classes are great because they usually explore something interesting and don’t require any pre-reqs.
- Intern at more than one company. It might be tempting to go back to what is familiar but you’ll never know what you’re missing.