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.
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.
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.
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.
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.
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.
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.
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.
Technical Communication: Emphasizing effective vocabulary and clarity in coding discussions.
Empathetic Engineering: Recognizing individual challenges and fostering a supportive environment.
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.
Mastery of Vocabulary benefits:
Opens doors to new knowledge and insights.
Provides a unified language for assistance and support.
Facilitates effective education and mentorship.
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.
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.
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.
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.
JavaScript operates in a single-threaded, synchronous, and blocking manner, ensuring clear control over execution flow.
JavaScript requires a runtime environment to execute, such as:
Browser (client-side operations).
NodeJS (server-side operations).
The Global Context is established first, while each function invocation generates a new execution context contributing to stack formation.
Every function must return a value; arrow functions can utilize implicit return features.
Minimize side effects for more predictable code behavior.
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.
Roles include the Navigator, who provides instructions and facilitates communication, and the Driver, who executes the instructions while engaging with the Navigator through questions.
Focus on syntax and application of arrow functions in ES6+, highlighting differences from traditional function declarations and expressions.
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).