rawerner / NSS-Syllabus-Cohort-3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NSS Cohort 3 - Software Development Fundamentals with Ruby and Rails

Course Goals and Expected Outcomes

Starting Point:

Twenty-odd students with a wide variety of experiences and education levels.

The incoming students currently have some skills with HTML/CSS/Javascript as well as test-driven development.

The students have a strong focus on the end-result of being professional software developers.

The Goal:

To produce hirable Junior Developers. As such, they should be able to:

  • build on existing Rails applications
  • work on cross-disciplinary teams
  • grow their skills independently
  • understand the depth and breadth of the field

With a little more Detail:

In order to attain the goals above, quite a few skills are required.

  • To Building on Existing Rails Applications, you must:
    • Understand How To Build Simple Rails Applications, which in turn requires:
      • A full understanding of Ruby the language, before embarking on Rails the framework
    • Use Test Driven Development to validate the results of your work
    • Be able to decipher existing applications and code bases
    • Be able to learn the tools that professional Rails developers use
    • Know about the problems that applications run into as they age
  • To Work on Cross-Disciplinary Teams, you must:
    • Understand how to read and write software requirements
    • Understand how to read and write documentation
    • Have the ability to work in a team
    • Communicate with your clients (both internal and external)
  • To Grow Your Skills Independently, you must:
    • Understand the areas in which you are weakest
    • Get feedback from peers and colleagues
    • Be able to form mentorship relationships with more advanced developers
    • Have an awareness of the depth and breadth of the field
  • To Understand the Depth and Breadth of the Field, you must:
    • Expose yourself to the viewpoints of developers that are very experienced in your area of focus
    • Expose yourself to the viewpoints of developers that are in areas outside of your area of focus
    • Have a working knowledge of the history of the field

Instructors

Primary Instructor

Eliza Brock, owner of Eliza Brock Software. Eliza has written web applications that span from boutique e-commerce sites to web services that support hundreds of thousands of mobile devices. She is returning to teach Software Development Fundamentals for a second time.

Assistant Instructors

Drew Butler, former NSS student and former instructor for the intro class at NSS. Drew will be leading afternoon lab hours.

Brandon Lyons, former NSS student and, recently, assistant for the intro class at NSS. Brandon will be assisting in class all day.

Schedule

The class will consist of 4 units over 12 weeks. We will have a mind-boggling two weeks off for Christmas/New Years.

Instructional time from 9AM to 12PM, daily.

Lab time from 1PM to 4PM, daily.

Each day starts with standup and then continues of ~3 30-minute lecture topics with discussion time and breaks.

After a lunch break, students work on individual assignments and research.

1. Using Test-Driven Development To Learn Ruby / Using Ruby to Learn Test-Driven Development

Goal: Demonstrate competence in standard-library Ruby

Capstone: Implement a variant of cal

Timeline: December 3rd - December 20th, with capstone due January 3rd

Major Topics:

  • Ruby Koans
  • Linked Lists
  • Basic Intro to Computer Science
  • Test-Driven Development

Schedule:

  • Week 1: Warm-up and dive into the Ruby Koans (Dec 1-7)
  • Week 2: Exploring basic Computer Science with Linked Lists (Dec 8-14)
  • Week 3: Mathematics refresher; Intro to Software Requirements & Specification; Starting Cal (Dec 15-21)
  • Capstone: Cal (due January 3rd)

2. Exploring SQL and the Ruby Ecosystem

Goal: Demonstrate mastery of basic git, project documentation (README, comments), writing unit tests, SQL and basic Ruby

Capstone: TDD Command-line Ruby Application

(This will deviate from the previous course, with students using pure SQL, as a precursor to ActiveRecord. The projects will be pure standard-library Ruby)

  • Week 4: Discuss and refactor Cal; Set theory; (Jan 5-11)
  • Week 5: Introduction to SQL; Northwinds database; ERDs; Small SQL statement project; Choosing capstone projects (Jan 12-18))
  • Week 6: User stories; Integration testing; Begin SQL capstone projects (Jan 19-25)
  • Week 7: Work on capstone projects; Error checking; Intro to storing and importing data with Ruby (e.g. File, CSV, etc.); Live-coding in-class SQL project (Jan 26 - Feb 1)
  • Week 8: Project presentations; ActiveRecord; Refactoring projects into ActiveRecord (Feb 2-8)

3. Developing a simple Rails application

Goal: Students develop an awareness of how the components of Rails interoperate and the basics of developing a Rails Application.

Capstone: This section has not previously had a capstone. However, students will work together in groups to develop their knowledge of Rails.

  • Week 9: MVC; REST; Overview of Rails; In-class Rails project; Assign group projects; Begin career prep (Feb 9-15)
  • Week 10: Presenting group work; Choosing capstone 4 projects; Software requirements (Feb 16-22)

4. Advanced Topics and Career Prep.

Goal: Students form an understanding of the depth and breadth of the field while meeting many of the practicing developers in Nashville.

Capstone: Develop a resume-worthy Rails application using TDD

Lectures in this final portion of the class will be delivered primarily by mentors and community members on their individual areas of expertise. Other lectures will be pulled from material in the topic list that won't have been covered in previous units.

  • Week 11: TBD; Work on capstone project; Career prep; Advanced Topics (Feb 23-Mar 1)
  • Week 12: TBD; Work on capstone project; Career prep; Advanced Topics (Mar 2-8)

Guest lecture topics are determined in large part by student interest and mentor availability.

Topics

Some of these topics, especially those in basic Computer Science and Software Engineering, will be covered in-depth. The rest of the topics will be covered in-breadth, with the goal of enabling students to learn more on their own.

Computer Science

Basic:

  • Mathematical (boolean) logic
  • Set theory
  • Algorithms (searching, sorting, etc.)
  • Data structures (stacks, queues, hashes, arrays, graphs, objects)
  • Algorithmic Complexity (Big O and friends)
  • Networking
  • Computer Architecture
  • Operating Systems
  • Relational Databases

Advanced:

  • Artificial Intelligence
  • Computer Vision
  • Robotics
  • Machine Learning
  • Image Processing
  • Cryptography

Software Engineering

  • Test Driven Development
  • Software Development Processes and Methodologies
  • Software Requirements and Specification
  • Quality Assurance
  • Design Patterns
  • Dev. Ops.

Practicalities (Individual Technologies)

  • HTTP Caching
  • Deployment
  • Server administration and automation
  • How the DNS system works
  • How operating systems work
  • Dev Ops
  • Networks
  • DB/Security Best Practices
  • API Development
  • Integrating with APIs
  • Fundamental Gates and Circuits
  • Big Oh
  • Overview of the IT field and technologies
  • Interviewing and job searches
  • Compilers and interpreters
  • Transitioning from Junior to Midlevel developer
  • Morals of Software Development
  • Getting paid what you're worth

About

License:MIT License


Languages

Language:Ruby 100.0%