GithubHelp home page GithubHelp logo

lessonplanning's Introduction

Ada Developers' Academy

Ada Developers' Academy’s 24-week introduction to web application development is meant to cover both a wide breadth of topics and particular depth into key knowledge areas. At the program’s completion, students will be well on their way to being proficient web developers with the tools and skills to build most web applications.

What are Web Applications?

Static websites and web applications have little distinction to many people. What's the difference?

Static websites are one or more documents that do not (or rarely) change. An example of this type of web content is your local dentist's website. There might be 5 pages: a homepage, rates, location, contact, and testimonials. The content typically does not change, and if it does, an administrator will update the document on the server. Each individual document is transferred and displayed to the requester.

Alternatively, a web application is software that is hosted on a server. The user requests a page in a similar manner to the way they'd visit a static website, but the software receives the request and generates the response (the page) dynamically. This can be seen in Facebook. All of the data is stored in a database. The software determines the most relevant information for the user, formats the data in HTML and sends the dynamic content back to the web browser. Web applications are popular because of their ease of use, access, distribution, flexibility, and maintainability over desktop applications.

Other common examples include:

  • Webmail
  • eCommerce / Online Stores
  • Online Auctions
  • Wikis

Development

Web application software can be written in many ways. Software developers will run the application's code on a local server to be able to quickly test and use the application without the need to deploy code to a remote server. Development is often simplified by using frameworks such as Ruby on Rails and shared within a team using version control software such as Git. Developers will build the software according to specs, user stories, wireframes, and guidelines specified by the project owners. Quality assurance (QA) and testing play an important role in the development and maintenance of any web application.

Prerequisites

We want to ensure that everyone coming into Ada Developers' Academy has similar baseline knowledge. Programming simply takes practice, and the more time you devote to it, the better you’ll be. To that end, please carve out some time to prepare for your first day.

Assignments

The following assignments are due before the first day of class. ADA mentors will be available during business hours to help with any problems that you encounter.

Classroom

At ADA, we want to provide a learning environment that is comfortable, positive and packed with learning. To do this, each day will be loosely structured in the following way:

  • Instruction - Instruction will be 1-4 hours, presented by an instructor or a mentor. This is how new topics will be introduced. Students may be asked to install software, follow along, and execute code during the lesson, so be prepared to listen, interact, and ask questions.
  • Assignments - Each day students will be given daily assignments to complete. The assignments will be relevant to the day's topics. Each assignment must be completed and submitted to GitHub by the following morning. The day's assignments will range from 1-10 short problems and will vary in difficulty depending on the circumstances.
  • Presentations - Students should expect to give "Lightning Talk" style presentations to small groups of other students as well as the the class as a whole.
  • Projects - Starting in week two, students will have to complete projects. Projects are larger assignments that will have a variety of issues to address and allow students to get creative by designing and implementing their own solutions to complex problems. Projects may last anywhere from three days to three weeks depending on complexity. Many projects will be in teams. Students will be expected to work with each other by collaborating on code via git and pair programming.
  • Project Time - Students will be given time to work on projects in the classroom when applicable. During project time, students can ask questions and request the help of available instructors or mentors.
  • Speakers - Mentors and guest speakers may occasionally be scheduled to lecture on a variety of topics, from technical coding to programming culture.
  • Reading Assignments - Reading assignments will be given on a weekly basis. Students are expected to read the material outside of class.
  • Review - Students will occasionally review their progress with the instructors. Instructors will typically schedule reviews every couple of weeks, but students are welcome to request a review at any time.
  • Community Involvement - Students will be expected to participate in local tech events - meetups, symposiums, conferences, hack nights - hosted by groups in the greater Seattle technical community.

Typical Day

  • 9:05 - 9:15 - Daily Standup
  • 9:15 - 10:00 - Instruction of new material
  • 10:00 - 10:30 - Daily assignments presented and explained
  • 10:30 - 10:45 - Break
  • 10:45 - 12:30 - Continued instruction
  • 12:30 - 1:30 - Lunch
  • 1:30 - 2:30 - Guest speaker
  • 2:30 - 5:00 - Project work
  • 4:00 - 5:00 - Student review with instructors

IRC channel

There is a group of volunteers who have offered to hang out online all day to answer any questions you may have as you learn your new craft. They're in an IRC chatroom called #adadevacademy on freenode.

If you're not familiar with IRC, here is a set of instructions that will help you find your volunteer question-answerers:

Obtain an IRC client

IRC clients vary in their features and commands, but that's nothing to worry about. One popular option on Mac is Adium (https://adium.im/). Pidgin (http://www.pidgin.im/download/) is another popular option which runs on Linux, MacOS, and Windows.

Commands preceded by / in the following instructions can typically be typed into an already-open chat window. There should be menus/dialogs/settings in your chat client to accomplish each of these results as well, but we've just included the commands to make things simple.

== Connect to the IRC network==

  • Obtain and run an IRC client.
  • Connect to chat.freenode.net. You can use your client's dialogs and settings to get this done. This can also be accomplished with the command /server chat.freenode.net.
  • If your client has not provided you with the option already, select a nickname. You can typically change your nickname with the command /nick [new-nickname-here]
  • If you have registered this nickname, identify yourself to the Freenode servers (see below).
  • Join one or more channels: For instance, /join #adadevacademy

== Register your nickname, identify, and enforce == If you connect frequently, you should register your nick with the NickServ service. This helps you establish "ownership" over a nickname: you can remove other users who are using the nickname, and it also provides a small amount of protection against people impersonating you using the nickname.

For instructions how to register, type /msg nickserv help register. This will inform you that the syntax for registration is /msg nickserv register [password] [[email protected]] You should substitute an actual password for [password]. It is a bad idea to use something easily guessed. It is also a bad idea to use another password for more secure things you do - IRC passwords should not be considered "secure", and it is easy to accidentally type your password into a channel instead of identifying with it (see below). Of course, you should insert your actual email address where indicated above. Then, check your inbox for a message from freenode. It's worth noting that for all of these commands, you don't need the "["brackets"]".

To take advantage of your registration you must identify yourself with NickServ every time you connect. The syntax for this is /msg nickserv identify [password] Your IRC client may provide an option to automatically send this message when you connect. Consult its documentation for more information. If you do not identify with your account occasionally, your registration might be removed by freenode staff if someone else wants the nickname (typically after a period of 60 days).

To change your password, use the command (after identifying) /msg nickserv set password [NewPasswordGoesHere]

IRC clients typically have an option to use an 'alternate nickname' to use if the primary nickname is in use when you connect (for example, if someone else is using it, or if you have been abruptly disconnected and a "ghost" of your original connection remains). Freenode recommends that you group this alternate nick (/msg nickserv help group) to your primary nickname. Once your nick is registered, you can enable 'enforce'. This will force any user claiming the nick to identify with the password within 30 seconds. This protects you from imposters taking your nick while you're offline. Since you configured your client to automatically identify, nothing changes for you (except being protected). /msg nickserv set enforce on

See also: http://freenode.net/faq.shtml#registering

See you online!

lessonplanning's People

Contributors

beatboxchad avatar bookis avatar cherimarie avatar eliseworthy avatar jags14385 avatar jaw6 avatar jefflembeck avatar kerrizor avatar kschlarman avatar nanoxd avatar natsteinmetz avatar nickirios avatar robinclowers avatar strand avatar yaauie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lessonplanning's Issues

Ruby/RVM installation notes

Start by installing the following software. Each of these are easy one-click installers:

Xcode
Brew
Textmate or Sublime TODO: Decide which

Brew should not be considered as a one-click installer until after they have installed CLI Tools. It should also go in more detail to teach/verify installation procedures (e.g. brew doctor to verify paths are set, brew install git to teach syntax)

Text Editor: I think Sublime might be a better fit due to it's unlimited free-trial, stable code base (less updates), and extensibility.

HTML5

Is it safe to assume that the unit should use HTML5 as the default? I don't know what the various engines the students will be using will be outputting by default, but I think it would be great to start them out with HTML5 for editing their templates and making any static content.

I had good success with teaching new semantic HTML5 tags first, then introducing generic tags like <div> and <span> to demonstrate using them only if not semantic option is available.

Front-end accessibility (a11y)

For week 6 (HTML/CSS) and maybe the javascript intro week, whenever that ends up, I'd love to introduce some basic accessibility principles like major use cases, basic ways to test and implement accessible styles (color contrast, font sizes and weights, that sort of thing), and accessible HTML (using semantic elements correctly, adding ARIA attributes).

I'm happy to lead the charge on this!

Working with existing code base

Most junior devs in an entry-level job or an internship will probably be working with an existing code base. It would be great if sponsoring companies could help provide small exercises or a small project. It could be a great way to teach readability, maintainability and refactoring.

Mobile Dev?

Mobile Dev is huge, so it would be great to introduce students to Objective C and/or RubyMotion with a small project during the last moth of the program.

ADA/curriculum/introduction.md: Timeframe for Students to Complete Ruby the Hard Way

Regarding the introduction to ADA for new students.

I've been working through Ruby the Hard Way (I was a wannabe ADA student, missed the deadline.) A quick scroll through the exercise list made me think that I could complete this assignment in a few days, however it's taking considerably longer. In fact, it seems to be by design: Exercise 22, for example, instructs students to spend a few days creating and recopying a list of commands and operators used thus far.

It could be helpful for future ADA students to see what would be a reasonable amount of time spent on that portion of the assignment.

Intro to JavaScript on week 6 and advanced JS for week 12?

To me it makes sense to pair HTML/CSS with JavaScript. Maybe go over some basic syntax and DOM manipulation so the students can add some extra functionality to what ever they build during the HTML/CSS week. On the scheduled JS week students can go over some more advanced topics like AngularJS, Node.JS, etc.

Thoughts?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.