The formal prerequisite is: CSSE 220 – Object-Oriented Software Development or CSSE 221 – Fundamentals of Software Development Honors. You should be comfortable with programming in general. If you have learned more than one programming language, that should make it easier for you to learn multiple languages/tools in this course.
This course will introduce principles of and some tools for Web programming.
Introduction to the client-side and server-side mechanisms for creating dynamic web applications with persistent data storage. Browser-server interaction via HTTP. Static web page creation using HTML5 and CSS3. Client-side programming using JavaScript, the DOM, and JSON. Server-side programming with Node.js and Express. Persistent data storage with MongoDB. Asynchronous client-server communication with AJAX and JavaScript extensions. Development and consumption of REST APIs. Deployment of web applications to cloud platforms or platform as a service providers. Security considerations. This course provides breadth of knowledge of many tools/technologies rather than deep knowledge of any particular tool/technology. No previous experience with Web development is required.
Topics will include (as many as time allows):
That list probably contains too many topics to cover in one term. I will try to find a "sweet spot" between too much breadth and too much depth. This course will not make you an expert in any of the topics that we discuss, but should give you sufficient background in each so that you can later pick up the rest on your own. Class sessions and homework will include many hands-on activities. I expect you to complete a small team project at the end of the course.
Learning objectives
Dr. Jason Yoder – Assistant Professor of Computer Science and Software Engineering
Email: |
yoder1 <at>
rose-hulman <dot>edu
|
Office phone: | x8347 |
Office address: | Olin O224 |
Office hours: | I plan to be on campus from 9:00 AM to 5:00 PM Mon-Thu. If you would like to meet with me on Friday, please email and I can arrange to meet via phone call, Skype, or possibly in person. For Mon-Thurs if I am not in class, at lunch, or in a meeting, I will usually be in my office. |
Piazza will be our platform for questions and answers. You are expected to participate by both asking and answering questions. If you were not already a Piazza member, you should have received an invitation to join. Find more details in the Communication section.
Besides the instructors and assistants, other students in the course can often be a great source of help. They will learn more if they explain things to you. Some students at Rose-Hulman have done significant web development. If one of them is your friend, why not ask her/him for help every now and then? Just be sure to not let someone else do your work for you.
Don't try to be the Lone Ranger in this course, especially if you do not find the course easy. If you find that you have worked on something for 30 minutes without making any progress, it's probably time to seek help! Software development is a team sport. The best programmers know that a fresh set of eyes can often spot a problem right away.
Web Design with HTML, CSS, JavaScript and jQuery Set 1st Edition , by Jon Duckett
Paperback: 1152 pages
Publisher: Wiley; 1 edition (July 8, 2014)
ISBN-10: 1118907442
ISBN-13: 978-1118907443
Links:
This is an excellent two-book combo that is well written and contains a many useful examples. Be careful with your books, however, because the binding is lacking.
Express in Action (Writing, building, and testing Node.js applications), by Evan M. Hahn
Paperback: 256 pages, printed in black & white
Publisher: Manning Publications Co. (April 2016)
ISBN-13: 978-1617292422
Links: Availability
This is a great book that gives a gentle introduction of Node.js, Express, and MongoDB.
I will give you many hands-on exercises; all the homework will be graded, but not every in-class exercise may be graded.
It is important that you keep up with the course material as we go along. You should do the reading and the ungraded exercises; these should make the graded exercises easier.
All graded assignments must be turned in before the due time (always 11:59 PM or during class time) if you want credit for them. I will strive to leave enough time so that if you start on the day I give an assignment, you should have little trouble finishing it before the due time.
Codecademy.com provides interactive courses on a variety of languages/technologies that are relevant to this course, including
You may work on any of the free courses that you choose, depending on what background knowledge you already have. This should give you more practice with building web applications.
There will be three exams during weeks 3, 6, and finals week. Each exam will have one or both of the following parts.
Weight | Criteria |
---|---|
10% | Attendance, participation in-class, online, & with in-class partner |
10% | Quizzes |
25% | Graded Homework problems (I expect to have about 6-8 of these) |
30% | Exams (during weeks 3, 6, and final exam) |
25% | Team Project (presentation during week 10) |
If your Exam average is significantly below your homework average, I reserve the right to lower your course grade, since the exams are my main way to measure what you can do on your own.
The in-class time in this course constitutes an important learning experience. You should be there. Several students who did not get into this course have requested that I raise the cap and let them in. If you are not going to be able to commit to be here when the class meets, you should drop the class to make room for one of them.
Missing a class meeting, or being more than 20 minutes late, will count as two "attendance point". Being more than five minutes late will count as one attendance point. Accumulating six attendance points before the end of the term may result in a failing grade for the course.
Attendance is the starting point for the participation grade. When you are in class, you should participate in discussions and in-class exercises, and assist your in-class partner as the two of you work on assigned tasks.
Piazza will be the main communication medium for this class. You should either subscribe so that you get automatic emails, or check the Piazza site daily. If you have questions or want to discuss something, Piazza is the place to do so. When I make course announcements between class meetings, I will usually post them on Piazza. If someone else posts a question and you know the answer, do not be shy about answering! There are lots of small things that hang people up in web programming; a quick answer from a fellow-student can make a big difference.
Finally, if you have questions about grading, need to make an appointment, or have other private communication, feel free to email me or a TA directly. We usually check email several times per day, and will do our best to respond within 24 hours. I also expect you to check your email daily (not necessarily on weekends, although even that is not a bad idea). When I send mail to you, I will use your Rose-Hulman address. If you do not currently read mail that is sent to that address, please have it forwarded to wherever you do read mail.
When you send a course-related email directly to me or a TA, please include 280 in your Subject: line (and include a real subject as well), so that we can quickly pick it out from among the dozens of daily email messages that we receive. Then we can respond to you more quickly. If an answer to your question is likely to help others in the class as well, or if you think other students may be able to answer it, consider posting it on Piazza instead of sending email. If I think everyone should see your question and the answer, I will ask you to post your question on Piazza before I answer it.
Bad email subject line: | When is HW 1 due? |
Bad email subject line: | CSSE 280 |
Good email subject line: | CSSE 280: When is HW 1 due? |
I welcome your suggestions for improving the course. Please notify me of things in the course that help you to learn, and things that I might do to improve the learning experience for you. If there is something that you'd like to tell me, but don't feel comfortable with having me know who it comes from, you can use the Anonymous Suggestion Box survey that I will provide on Moodle. You can also post anonymous messages to the instructor on Piazza.
While we hope you feel comfortable speaking with any faculty in the
department, if you have a concern and are not sure where to go, the
following CSSE faculty have volunteered to be ombudsmen for the department:
Sid Stamm (F216), Amanda Stouder (F222), Kim Tracy (D216),
Robert Williamson (F205), and Vibha Alangar
(set up a meeting with her at alangavr <at>
rose-hulman
<dot>edu
).
Recall the Institute's General Policy on academic misconduct:
Rose-Hulman expects its students to be responsible adults and to behave at all times with honor and integrity.
Exams and homework will be done on an individual basis, except where explicitly noted. The simple rule of thumb for individual homework is:
Never give anyone your code or use someone else's code.
Such exchanges are definitely cheating and not cooperation. The CSSE department statement on academic honesty has more detailed advice.
We encourage you to discuss the problems and general approaches to solving them with other students, and to get help with debugging. However, when it comes to writing code, it should be your own work (or the work of your group if it is a group assignment). If you are having trouble understanding how some library code works or pinning down a run-time or logic error in your program, by all means talk to someone about it. Get help with debugging when you need it.
If you use someone else's ideas in your solution, you must:
If you are ever in doubt about whether some specific situation violates the policy, the best approach is to discuss it with your instructor beforehand. This is a very serious matter that we do not take lightly. Nor should you.
For graded assignments, you should not look at another student's code to get ideas of how to write your own code. Beginning the process of producing your own solution with an electronic copy of work done by other students is never appropriate.
Plagiarism or cheating (e.g., turning in code from exam after the due time) will result in a negative score (i.e., less than zero) for the assignment or exam. Egregious cases will result in a grade of “F” for the course. More importantly, such dishonesty steals your own self-esteem and your opportunity to learn. So, don't cheat!
Students are expected to behave professionally. A lack of professional behavior in a student’s interactions within a team, with an instructor, teaching assistants or during in-class activities can result in a penalty grade. Depending on the nature and the egregiousness of the behavior, the penalty grade might be a reduction in letter grade or an F in the class.