1. Tue - Intros, Functions & Hoisting

CS Prep Overview

Who We Are:

  • Will Sentance - CEO & Head of Engineering at Codesmith, brings extensive experience in software engineering and education, focusing on enhancing student learning.

  • Mila Hose - CS Prep Instructor, dedicated to fostering a supportive learning environment for students and passionate about teaching coding concepts effectively.

  • Phillip Troutman - Chief Academic Officer, oversees curriculum development and quality assurance within the coding bootcamp, ensuring alignment with industry standards.

Day 1 Notes

Introduction to Coding:
  • Icebreaker Questions: To foster a sense of community, participants are encouraged to share their:

    • Preferred name.

    • Current location.

    • Previous activities before joining Codesmith and any relevant work experience.

    • Participation in previous workshops, specifically the JSB workshop.

    • Personal motivations for joining CS Prep.

Daily Overview:

Welcome to Hard Learning, a program emphasizing:

  • JavaScript Runtime: Understanding how JavaScript operates in different environments.

  • JavaScript Execution: Learning how JavaScript codes are run and processed.

  • Variables: Grasping data storage and manipulation.

  • Functions: Exploring reusable code structures.

  • Pair Programming: Collaborating with peers to enhance learning.

  • Arrow Functions: Delving into ES6+ syntax for cleaner code.

Week 1 Schedule

  • Day 1 - Tuesday:

    • Topics: Functions, Execution Contexts, Variable Declarations.

    • Time: 5:00pm - 8:00pm Pacific / 8:00pm - 11:00pm Eastern.

  • Day 2 - Wednesday:

    • Topics: Objects, Arrays, Prototypal Inheritance, Object-Oriented Programming (OOP).

    • Time: 5:00pm - 8:00pm Pacific / 8:00pm - 11:00pm Eastern.

  • Day 3 - Thursday:

    • Topics: ES5 vs. ES6+, Arguments Object, Rest, Spread, Arrow Functions, Week 1 Review.

    • Time: 5:00pm - 8:00pm Pacific / 8:00pm - 11:00pm Eastern.

  • Day 4 - Saturday:

    • Topics: Advanced Higher-Order Functions with Diagramming and practical application in the “Big Data” Project.

    • Time: 9:00am - 3:00pm Pacific / 12:00pm - 6:00pm Eastern.

CS Prep Infrastructure

  • Tools Used:

    • Zoom.us: For live lectures and real-time pair programming sessions.

    • Csbin.io: A platform for collaborative problem-solving and peer coding.

    • Repl.it: Online coding environment for daily assessments and programming practices.

    • Slack: Community platform for communication, code reviews, resource sharing, and access to session recordings.

Goals of CS Prep:

Participants will aim to become proficient problem-solving engineers through:

  • Hands-on project building with JavaScript.

  • Deep understanding of JavaScript, including the latest ES6 features.

  • Practicing excellent technical communication skills.

  • Engaging with a supportive learning community.

  • Acquiring practical skills pertinent to the development industry.

  • Mastering the art of continual learning and adaptation in technology.

Expectations of CS Prep Participants:

  • Support Your Community:

    • Focus on personal growth while uplifting peers.

    • Maintain professionalism and active engagement during sessions.

    • Embrace the learning process and its challenges.

    • Be proactive in contributing ideas and asking questions.

    • Communicate openly with instructors to enhance learning outcomes.

Instructor Expectations:

  • Empathetic Engineering:

    • Arrive prepared for classes with necessary materials.

    • Practice active listening to students' questions and feedback.

    • Support students as fellow learners, fostering a collaborative atmosphere on the journey to mastery.

Pillars of CS Prep:

  1. Technical Communication: Emphasizing effective vocabulary and clarity in coding discussions.

  2. Empathetic Engineering: Recognizing individual challenges and fostering a supportive environment.

  3. Importance of Technical Communication and Engineering Empathy: Linking these principles to excellence in:

  • Codesmith Residency programs.

  • Software Engineering careers.

  • Engineering Leadership roles.

  • Overall learning development.

Technical Communication:

  • Mastery of Vocabulary benefits:

    • Opens doors to new knowledge and insights.

    • Provides a unified language for assistance and support.

    • Facilitates effective education and mentorship.

Engineering Empathy:

  • Inward:

    • Cultivate grit and a growth mindset for personal challenges.

    • Acknowledge the need for breaks to maintain mental health.

  • Outward:

    • Recognize that challenges are universal among peers.

    • Actively support fellow engineers and nurture their growth.

    • Teaching others solidifies one's understanding of concepts.

Tools for Learning Excellence:

  • Commitment to Excellence:

    • Engaging in Interactive Diagramming to visualize complex concepts.

    • Embracing Pair Programming to learn collaboratively.

    • Utilizing Technical Communication Videos for additional learning resources.

    • Completing Freeform Projects to apply skills in real-world scenarios.

    • Participating in Code Review practices to enhance code quality.

Best Practices in Coding:

To write clean, readable code, adhere to:

  • Proper indentation and spacing for readability.

  • Semantic variable naming for clarity of purpose.

  • Adequate commenting to explain code functionality.

  • Strategic use of console logs for debugging and testing.

  • Frequent refactoring to maintain DRY (Don't Repeat Yourself) principles.

JavaScript Fundamentals:

  • Characteristics of JavaScript:

    • High-level, interpreted, and dynamically typed language.

    • Supports multiple programming paradigms: Object-oriented and functional programming styles.

    • Memory-managed and features garbage collection for efficiency.

Execution Model:
  • JavaScript operates in a single-threaded, synchronous, and blocking manner, ensuring clear control over execution flow.

Execution Environments:

JavaScript requires a runtime environment to execute, such as:

  • Browser (client-side operations).

  • NodeJS (server-side operations).

Execution Contexts & Call Stack:

  • The Global Context is established first, while each function invocation generates a new execution context contributing to stack formation.

Functions in JavaScript:

  • Every function must return a value; arrow functions can utilize implicit return features.

  • Minimize side effects for more predictable code behavior.

Hoisting in JavaScript:

  • Variable and function declarations are hoisted, impacting their accessibility prior to declaration.

  • Understand the nuances between var, let, and const regarding hoisting and scope limitations.

Pair Programming:

  • Roles include the Navigator, who provides instructions and facilitates communication, and the Driver, who executes the instructions while engaging with the Navigator through questions.

Arrow Functions Overview:

  • Focus on syntax and application of arrow functions in ES6+, highlighting differences from traditional function declarations and expressions.

Conclusion of Day 1:

Next Steps:
  • Continue pairing to deepen understanding and collaboration.

  • A Problem of the Day (POD) will be assigned for practice.

  • Day 2 topics will include Objects, Arrays, Prototypal Inheritance, and Advanced Object-Oriented Programming (OOP).

robot