This course focuses on some of the fundamentals of software development, with a distinct emphasis on the development of rich large-scale web applications. Along the way, you will become skilled in Javascript, the programming language for the web.
The inception of the World Wide Web has ushered in a new era in communications, with applications and website being accessed from all parts of the world. Web applications play a pivotal role in this new world, with their ability to bring people together and to allow them to exchange goods and ideas in an unparalled scale. We live in a world where common desktop tasks such as word processing and spreadsheet calculations are now all done “in the cloud”, leading to the software-as-a-service business model of today’s web applications.
Web applications, along with Mobile applications, are a dominant sector in today’s marketplace. In addition to all the normal challenges presented in software development, both kinds of applications run within a specific platform and environment, with limited capabilities and new challenges not faced by desktop applications. They also are subject to additional security questions. We will be examining these issues as the term progresses.
Large-scale applications contain at a minimum tens of thousands of code lines, and possibly hundreds of thousands. And a lot of that code is interconnected, so changes in one place might have ramifications all over the code base. Most of these projects also last for many years, and involve many revisions of the code, often by different programmers. Managing to work with such large pieces of code requires discipline and consistent use of practices aimed at managing as well as reducing the complexity of your code. Therefore a considerable part of the course is devoted to software development practices:
These are all essential skills transferable to other programming languages and environments. We will also be focusing on a number of issues related specifically to Javascript programming and Web Applications, including:
A large part of the course will be a project that you will be working on in collaboration with one other student. This will give you the opportunity to practice the above principles in a real project, as well as giving you the satisfaction of having created a deliverable project of your own.
In the class schedule page you will find, for each class day, a list of links to reading assignments. Your homework and lab work will require you to have a solid understanding of the material covered there, so I strongly encourage you not to get behind.
You are expected to attend every class meeting, including labs. You are only allowed to miss 3 classes without excuse. From that point on, every unexcused absence will result in a reduction of your final score by one percentage point, up to a total of 5 points. Excused absences should be arranged in advance, and backed by appropriate documentation. Emergencies will be dealt with on an individual basis. There are very few reasons that would qualify as an excuse for an absence.
You will have quiz about once a week, based on the material covered that week. You are expected to work on these on your own. Whenever there is code involved, make sure to have tested the code in the Console before filling in your answer.
About once a week you will have a slightly longer and more thought-provoking lab assignment.
There will be two equal-weight exams, one midterm (date TBD) and one during finals week, focusing on both the theoretical aspects of the course and some code snippets.
A large part of your grade will be the term project that you will need to work on with one partner. The end result will be a fully-functioning Web Application and the GitHub project used to maintain it. This will also include documentation and an extensive test suite for your application.
Your final grade depends on class attendance, homework, labs, project and the final, as follows:
Component | Percent |
---|---|
Attendance | 5% |
Quizzes | 5% |
Labs | 20% |
Code Reviews | 10% |
Project Completion | 15% |
Project Rubric | 15% |
Exam 1 | 15% |
Exam 2 | 15% |
This gives a number up to 100, which is then converted to a letter grade based roughly on the following correspondence:
Letter grade | Percentage Range |
---|---|
A, A- | 90%-100% |
B+, B, B- | 80%-90% |
C+, C, C- | 70%-80% |
D+, D, D- | 60%-70% |
F | 0%-60% |