Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CPEN 322: Software Construction 2

Course Introduction

This is a third year elective course on building modern web applications. We will cover a variety of techniques. The primary language we will use for the class is JavaScript, though this is NOT a course on JavaScript or any other      language. We will cover the following topics in class (rough outline):

●    Building simple web pages with HTML and CSS

   JavaScript essentials, DOM and event handling

●    Asynchronous JavaScript and XML (AJAX)

●    Node.js and NoSQL Databases

Pre-requisites and background

The prerequisite for this class is CPEN 221. You are solely responsible for all material covered in that class.

However, we do not require any familiarity with web applications or JavaScript to take this class, though of course,  such familiarity will be helpful. We will not cover JavaScript syntax in this class  you will have to pick it up on your own from textbooks or online tutorials. We will cover the basic concepts of web programming though.

Course Logistics and Policies

1.    The lectures will be conducted in a hybrid fashion, with both online and in-person components. There’ll be both in-class sessions and virtual sessions (i.e., via recorded video).

2.    Labs will be held mostly online - there’ll be no need to show up for any of the labs either physically or        virtually. Assignment submissions will be done online (via Github), and does not require physical presence.

3.    The in-person class sessions will involve live problem-solving. We’ll post the problems before the class,    and the solutions will be posted after class. Attendance will not be taken at these events, but they will NOT be recorded nor live-streamed on Zoom. Exam questions will be similar to these problems, and so you are  strongly encouraged to attend them. No makeup sessions will be held ifyou miss any of these sessions.

4.    We will use Piazza for online discussions and for answering questions about the assignments. You must  sign up for a Piazza account by the end of this week. Questions about the class must be posted to Piazza1 and NOT emailed to the TAs or the professor (you can send a private note to Instructors” if needed).

5.    We’ll post asynchronous videos of the course content every week by Tuesday evening Pacific time. You     should watch these videos before the problem solving sessions - each video will be 1.5 hours long. There’ll be an online quiz every week due on Monday 11:59 PM Pacific time (except holidays), based on the           contents of the lecture video - this will be a multiple-choice quiz on Canvas and it will be auto-graded.

6.    During Karthik’s office hours, he will only answer questions about the class lectures and/or problem solving sessions. No questions about the assignments will be answered during this time.

7.    Any questions on the assignments must be posted on Piazza as public notes, and must be addressed to all the  “Instructors” . These will be answered by TAs. No questions will be answered about the assignments  within 48 hours of the deadline. No solution code should be posted on Piazza or else you’ll get a 0 for the assignment - we have access to all your Github repositories and can look at your code if needed.

8.    The labs will serve at TA office hours, and are the only way to get help with the assignments on a

one-on-one basis. We will not set up any sessions outside of these lab times to help with the assignments. You need to start the assignments early ifyou want help during the lab times from the TAs.

9.    The assignments cumulatively build upon each other, so not turning in even a single assignment can    adversely impact your grade for future assignments. No solutions will be released for the assignments.

10.  Assignments will be done individually. You may not share code or discuss solutions with any other student working on the assignment. We reserve the right to call upon you to explain the details of your solution.     Failure to do so will result in you getting a 0 for the assignment, and be considered academic misconduct.

11.  All deadlines are hard unless you have a documented emergency - you may be called upon to produce         documentation related to the nature of the emergency. Note that ifyou miss any component of the course,   the weightage of that component will be moved to the final exam. There is no need to inform us in advance.

12.  There is to be no collaboration for quizzes, exams etc. - any violation of this policy will be treated as    academic misconduct, and dealt with accordingly. All exams, quizzes are open-book and open-notes.

13.  Finally, it is your responsibility to keep up with all course announcements, lectures and assignments. You are also expected to monitor Piazza on a regular basis. No email will be sent for any announcements.

Course Grading

We will have regular programming assignments in this class (total of 5 assignments over 12 weeks). Each                  assignment will count for 8% of your total grade and will cumulatively constitute 40% of the course grade. The         assignments will be due roughly every other week and will involve a substantial amount of JavaScript programming.

In addition to the assignments, we will have weekly quizzes as mentioned above - each of these counts for 1% of your final grade, for a total of 12% over the 12 weeks of the course.  The course will have two exams –a midterm exam, and a final exam. These will account for 13% and 25% of your grade respectively. We will also have a       programming proficiency test in class which will test basic knowledge of JavaScript and programming – this will count for 5% of your grade. The proficiency test will be held one week into the course, and you will receive your marks on the same day. Finally, you will get participation points of up to 5% of the marks for online discussions.

Textbook

There is no textbook for this course, though the book JavaScript: The good parts” by Doug Crockford  (see left image) is highly recommended. Lecture notes will be posted on the       course web page approximately every week.  However, the programming assignments will  require knowledge of JavaScript beyond what is covered in the class. So I recommend the   book JavaScript: The Definitive Guide” from O’Reilly. If you want a quick primer on        JavaScript, I recommend the free, online book Eloquent JavaScript: A modern introduction to programming (third edition)” by Marijn Haverbeke: http://eloquentjavascript.net/