Syllabus
Computer Science 601.228
Full-Stack JavaScript
Fall 2020 (3 credits, EQ)
Instructor
Ali Madooei, madooei@jhu.edu
https://www.cs.jhu.edu/faculty/ali-madooei/
Office hours to be posted on the course discussion board.
Teaching Assistant
Staff and their office hours will be posted on the course discussion board.
Meetings
- Section 1: Tuesday, Tursday, 12:00 - 01:15 PM ET, Online
- Section 2: Tuesday, Tursday, 01:30 - 02:45 PM ET, Online
Textbook
For students who prefer a textbook over sporadic resources available on the Internet, the following book is suggested:
- Haverbeke, Marijn. Eloquent JavaScript: A Modern Introduction to Programming. Third edition, No Starch Press, 2019. –
The book is available in print, as well as in various digital formats. You can read it for free at https://eloquentjavascript.net/.
Online Resources
The course homepage will serve as the location for all documents (general resources, assignments, lecture notes, …).
We will email you, though SIS, before the start of the semester, to provide you with links to the course homepage and the course discussion forum.
A full-stack JavaScript developer is a person who can build modern software applications using primarily the JavaScript programming language. Creating a modern software application involves integrating many technologies - from creating the user interface to saving information in a database and everything else in between and beyond. A full-stack developer is not an expert in everything. Rather, s/he is someone who is familiar with various (software application) frameworks and the ability to take a concept and turn it into a finished product.
This course will teach you programming in JavaScript and introduce you to several JavaScript frameworks that will enable you to build modern web and cross-platform desktop and mobile applications.
A student who successfully completes this course will be on the expedited path to becoming a full-stack JavaScript developer.
Prerequisites
Students must have taken EN.601.220
Intermediate Programming or EN.601.226
Data Structures. Students must not have taken or be concurrently enrolled in EN.601.421/621
Object-Oriented Software Engineering.
You should have a modest exposure to a programming language such as Java, C++, or Python:
- know the basics of structured programming (decomposing a solution into modules, making use of control structures, …)
- know the basics of object-oriented programming (modelling a solution as a set of interacting objects, capturing complexity through the use of inheritance and object composition, …)
Course Goals
This course is designed to provide a solid introduction to the JavaScript language. In particular, we will explore the features of JavaScript (such as asynchronous programming) that are not familiar to many students who are introduced to programming with languages such as Java, C++ or python.
This class will give you experience creating Web applications. In the process, you will learn about the engineering of modern
software applications, emphasizing: object-oriented design, decomposition, encapsulation, abstraction, testing, and good programming style.
This course will address the following Computer Science BS Program Student Outcomes:
- Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions. [SO1]
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline. [SO2]
- Apply computer science theory and software development fundamentals to produce computing-based solutions. [SO6]
Course Topics
After exploring the core programming concepts, the class lectures and homework assignments will introduce how JavaScript is used as a popular technology for software development. In particular we will explore the MERN stack (MongoDB with Mongoose.js, ReactJS, Express.js, Node.js) and several other JavaScript libraries.
Course Expectations & Grading
Course grades will be based on assignments (programming homework) and a quizz according to the proportions below. Each homework assignment will be assigned a point value; the overall homework assignment grade will be computed as your total points earned divided by the total achievable points.
- 80% - Four Assignments (Programming Homework)
- 20% - Quizz
This course has no final exam! (Even if a final is scheduled for it on SIS/registrar website.)
From WSE Deans correspondance:
The fall 2020 academic term and our switch to remote instruction has presented new and significant challenges for our students and faculty, including in the area of student assessment.
In particular, the interrelated and significant issues of equity and integrity, which are routine considerations under normal circumstances, have taken on heightened significance in the context of remote learning.
Our commitment to equity means that, to the best of our ability, we ensure our assessment practices do not unfairly disadvantage certain students relative to others.
Our commitment to integrity means that, to the best of our ability, we ensure students maintain ethical practices during assessment and that individuals whose practices are unethical are held accountable for violating community standards.
In the fall 2020 academic term, assessment will necessarily occur remotely.
You will be provided with the necessary information about remote assessments at least one week before the quiz, on the course homepage and through announcements on the course discussion forum.
Letter grades for the course will be subject to the instructor’s evaluation of your overall class performance, generally based on this standard scale:
Cutoff |
Letter Grade |
S/U Grading |
>90 |
A−, A, A+ |
Satisfactory |
>80 |
B−, B, B+ |
Satisfactory |
>70 |
C−, C, C+ |
Satisfactory |
>60 |
D, D+ |
Unsatisfactory |
≤60 |
F |
Unatisfactory |
The cutoff for assigning −/+ to each grade letter is further subject to the instructor’s evaluation of your overall class performance. Do not expect a curve in this course.
You must get at least 50% on quizz and at least 70% on assignments (combined), to pass the course. If you fail to meet this bar for either component, you will fail the course. (Even if your overal grade is 70% or higher.)
From WSE Deans correspondance:
The Homewood Academic Council has voted to make S/U grading the default
grading for undergraduate
courses at Homewood during Fall 2020, but to allow students to opt for letter
grades for any number of
courses they choose (providing that the course is not set at entirely S/U
grading). Students will have
until 5:00 pm January 10, 2021 to select the grading for their courses. Faculty
will be presented with a
roster that includes letter grades, they will enter grades as they normally
would, and any conversion to
S/U grades will be handled within the registrar’s office.
Logistics
Please refer to the course homepage.
Attendance
All students are generally expected to attend all meetings of this course, and actively participate in all course meetings. If you miss a class meeting for any reason, you are responsible for material presented, and it is your responsibility to obtain any missed handouts or other materials.
For students who reside in distant time zones, you are not expected to attend the lectures synchronously. All lectures will be recorded. The recording will be made available to all students for asynchronous viewing/reviewing.
Late Days
- All students start the semester with a budget of five late days; however, you can only use at most 2 late days for any particular deadline/assignment.
- Each late day extends the deadline of a grade item by exactly 24 hours.
- Late days cannot be used to delay a midterm/final exam.
- Late days have to be used in their entirety.
- You can only use a late day if you have one left in your budget.
All you need to do in order to use a late day is submit a grade item after the deadline has expired through the regular submission. There is no need to “request” a late day in advance, it’s solely based on when you submit. Of course, you must still have a late day available, otherwise the late submission will result in a score of 0.
Note that since late days are used up automatically based on your
submission, it’s very important that you weigh your options carefully. You cannot “get back” a late day after the fact because you (or one of your teammates) made a mistake.
Late days are a valuable commodity and you should use them sparingly. They are primarily intended to help you deal with unexpected circumstances, so you should not make them part of your normal planning process.
There is no grace period for assignment deadlines, only late days.
Key Dates
For the Fall 2020 semester:
Dates |
Events |
8/31 |
Classes will begin |
9/7 |
Labor Day, classes will not meet |
10/22 & 23 |
Fall Break days, classes will not meet |
11/23-27 |
Thanksgiving break week, classes will not meet |
12/9 |
Last day of classes |
12/10-11 |
Reading period |
12/14-12/22 |
Final Exams period |
The schedule of topics, assignments and exams will be posted on the course homepage.
Ethics
The strength of the university depends on academic and personal integrity. In
this course, you must be honest and truthful, abiding by the Computer Science
Academic Integrity Policy:
Cheating is wrong. Cheating hurts our community by undermining academic integrity, creating mistrust, and fostering unfair competition. The university will punish cheaters with failure on an assignment, failure in a course,
permanent transcript notation, suspension, and/or expulsion. Offenses may be
reported to medical, law or other professional or graduate schools when a
cheater applies.
Violations can include cheating on exams, plagiarism, reuse of assignments
without permission, improper use of the Internet and electronic devices,
unauthorized collaboration, alteration of graded assignments, forgery and
falsification, lying, facilitating academic dishonesty, and unfair competition.
Ignorance of these rules is not an excuse.
Academic honesty is required in all work you submit to be graded. Except where
the instructor specifies group work, you must solve all homework and
programming assignments without the help of others. For example, you must not
look at anyone else’s solutions (including program code) to your homework
problems. However, you may discuss assignment specifications (not solutions)
with others to be sure you understand what is required by the assignment.
If your instructor permits using fragments of source code from outside sources,
such as your textbook or on-line resources, you must properly cite the source.
Not citing it constitutes plagiarism. Similarly, your group projects must list
everyone who participated.
Falsifying program output or results is prohibited.
Your instructor is free to override parts of this policy for particular
assignments. To protect yourself: (1) Ask the instructor if you are not sure
what is permissible. (2) Seek help from the instructor, TA or CAs, as you are
always encouraged to do, rather than from other students. (3) Cite any
questionable sources of help you may have received.
On every exam, you will sign the following pledge: “I agree to complete this
exam without unauthorized assistance from any person, materials or device.
[Signed and dated]”. Your course instructors will let you know where to find
copies of old exams, if they are available.
Report any violations you witness to the instructor.
You can find more information about university misconduct policies on the web
at these sites:
Personal Wellbeing
- All students with disabilities who require accommodations for this
course should contact me at their earliest convenience to discuss their
specific needs. If you have a documented disability, you must be registered
with the JHU Office for Student Disability Services (Shaffer 101; 410-516-4720;
http://web.jhu.edu/disabilities/) to receive accommodations.
- If you are struggling with anxiety, stress, depression or other mental
health related concerns, please consider visiting the JHU Counseling Center.
If you are concerned about a friend, please encourage that person to seek out
our services. The Counseling Center is located at 3003 North Charles Street in
Suite S-200 and can be reached at 410-516-8278 and online at
http://studentaffairs.jhu.edu/counselingcenter/
Classroom Climate
I am committed to creating a classroom environment that values the diversity of
experiences and perspectives that all students bring. Everyone here has the
right to be treated with dignity and respect. I believe fostering an inclusive
climate is important because research and my experience show that students who
interact with peers who are different from themselves learn new things and
experience tangible educational outcomes. Please join me in creating a
welcoming and vibrant classroom climate. Note that you should expect to be
challenged intellectually by me, the TAs, and your peers, and at times this may
feel uncomfortable. Indeed, it can be helpful to be pushed sometimes in order
to learn and grow. But at no time in this learning process should someone be
singled out or treated unequally on the basis of any seen or unseen part of
their identity.
If you ever have concerns in this course about harassment, discrimination, or
any unequal treatment, or if you seek accommodations or resources, I invite you
to share directly with me or the TAs. I promise that we will take your
communication seriously and to seek mutually acceptable resolutions and
accommodations. Reporting will never impact your course grade. You may also
share concerns with the Department Head (Randal Burns, randal@cs.jhu.edu), the
Director of Undergraduate Studies (Joanne Selinski, joanne@cs.jhu.edu), the
Assistant Dean for Diversity and Inclusion (Darlene Saporu, dsaporu@jhu.edu),
or the Office of Institutional Equity (oie@jhu.edu). In handling reports,
people will protect your privacy as much as possible, but faculty and staff are
required to officially report information for some cases (e.g. sexual
harassment).
Family Accommodations Policy
You are welcome to bring a family member to class on occasional days when your
responsibilities require it (for example, if emergency child care is
unavailable, or for health needs of a relative). Please be sensitive to
the classroom environment, and if your family member becomes uncomfortably
disruptive, you may leave the classroom and return as needed.
Religious Holidays
From WSE Deans correspondance:
Religious holidays are valid reasons to be excused from class. Students who must miss a class or an examination because of a religious holiday must inform the instructor as early in the semester as possible in order to be excused from class or to make up any work that is missed.
For homework assignments, you must plan on using your late days towards religious holidays. If a holiday is longer than 2 days permitted late day per homework, we can make an exception for you to use more days subject to having late days left in your budget. You must inform the instructor as early in the semester as possible about your intention on using (more than two) late days for a specific homework during a religious holiday.
I extend the same curtousy to cultral/national holidays, or any other sort of engagement that you personally might have such as Athletics, Academics, etc. For instance, if you will be away on a conference, you can get permission to use more than two late days subject to the conditions stated above.
University Policy on Incompletes
From WSE Deans correspondance:
The university recognizes that the Fall 2020 semester is surrounded with
uncertainty and many students may find themselves in unexpected situations
where study is difficult if not impossible. Students who are confronted with
extraordinary circumstances that interfere with their ability perform their
academic work may request an incomplete grade from the instructor. While
approval of such a request is not automatic, it is expected that faculty will
make every effort to accommodate students dealing with illness in the family
and other pandemic-related hardships. The instructor and student must establish
a timetable for submitting the unfinished work with a final deadline no later
than the end of the third week of the Spring 2021 semester (February 12, 2021).
Exceptions to this deadline require a petition from the instructor to the
student’s academic advising office by February 12, 2021. When entering an
Incomplete grade in SIS, faculty must include a reversion grade which
represents the grade the student will receive if s/he does not complete the
missing work by the agreed-upon deadline.
Deadlines for Adding, Dropping and Withdrawing from Courses
- Students may add a course up to September 11, 2020.
- They may drop courses up to October 12, 2020 provided they remain registered for a minimum of 12 credits.
Between October 12 and November 13, 2020, a student may withdraw from a course
with a W on their academic record.
A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and then withdrew from the course.
Syllabus
Computer Science
601.228
Full-Stack JavaScript
Fall 2020 (3 credits, EQ)
Instructor
Ali Madooei, madooei@jhu.edu
https://www.cs.jhu.edu/faculty/ali-madooei/
Office hours to be posted on the course discussion board.
Teaching Assistant
Staff and their office hours will be posted on the course discussion board.
Meetings
Textbook
No required textbook.
For students who prefer a textbook over sporadic resources available on the Internet, the following book is suggested:
Online Resources
The course homepage will serve as the location for all documents (general resources, assignments, lecture notes, …).
We will email you, though SIS, before the start of the semester, to provide you with links to the course homepage and the course discussion forum.
Course Information
A full-stack JavaScript developer is a person who can build modern software applications using primarily the JavaScript programming language. Creating a modern software application involves integrating many technologies - from creating the user interface to saving information in a database and everything else in between and beyond. A full-stack developer is not an expert in everything. Rather, s/he is someone who is familiar with various (software application) frameworks and the ability to take a concept and turn it into a finished product.
This course will teach you programming in JavaScript and introduce you to several JavaScript frameworks that will enable you to build modern web and cross-platform desktop and mobile applications.
A student who successfully completes this course will be on the expedited path to becoming a full-stack JavaScript developer.
Prerequisites
Students must have taken
EN.601.220
Intermediate Programming orEN.601.226
Data Structures. Students must not have taken or be concurrently enrolled inEN.601.421/621
Object-Oriented Software Engineering.You should have a modest exposure to a programming language such as Java, C++, or Python:
Course Goals
This course is designed to provide a solid introduction to the JavaScript language. In particular, we will explore the features of JavaScript (such as asynchronous programming) that are not familiar to many students who are introduced to programming with languages such as Java, C++ or python.
This class will give you experience creating Web applications. In the process, you will learn about the engineering of modern software applications, emphasizing: object-oriented design, decomposition, encapsulation, abstraction, testing, and good programming style.
This course will address the following Computer Science BS Program Student Outcomes:
Course Topics
After exploring the core programming concepts, the class lectures and homework assignments will introduce how JavaScript is used as a popular technology for software development. In particular we will explore the MERN stack (MongoDB with Mongoose.js, ReactJS, Express.js, Node.js) and several other JavaScript libraries.
Course Expectations & Grading
Course grades will be based on assignments (programming homework) and a quizz according to the proportions below. Each homework assignment will be assigned a point value; the overall homework assignment grade will be computed as your total points earned divided by the total achievable points.
This course has no final exam! (Even if a final is scheduled for it on SIS/registrar website.)
You will be provided with the necessary information about remote assessments at least one week before the quiz, on the course homepage and through announcements on the course discussion forum.
Letter grades for the course will be subject to the instructor’s evaluation of your overall class performance, generally based on this standard scale:
The cutoff for assigning −/+ to each grade letter is further subject to the instructor’s evaluation of your overall class performance. Do not expect a curve in this course.
You must get at least 50% on quizz and at least 70% on assignments (combined), to pass the course. If you fail to meet this bar for either component, you will fail the course. (Even if your overal grade is 70% or higher.)
Logistics
Please refer to the course homepage.
Attendance
All students are generally expected to attend all meetings of this course, and actively participate in all course meetings. If you miss a class meeting for any reason, you are responsible for material presented, and it is your responsibility to obtain any missed handouts or other materials.
For students who reside in distant time zones, you are not expected to attend the lectures synchronously. All lectures will be recorded. The recording will be made available to all students for asynchronous viewing/reviewing.
Late Days
All you need to do in order to use a late day is submit a grade item after the deadline has expired through the regular submission. There is no need to “request” a late day in advance, it’s solely based on when you submit. Of course, you must still have a late day available, otherwise the late submission will result in a score of 0.
Note that since late days are used up automatically based on your submission, it’s very important that you weigh your options carefully. You cannot “get back” a late day after the fact because you (or one of your teammates) made a mistake.
Late days are a valuable commodity and you should use them sparingly. They are primarily intended to help you deal with unexpected circumstances, so you should not make them part of your normal planning process.
There is no grace period for assignment deadlines, only late days.
Key Dates
For the Fall 2020 semester:
The schedule of topics, assignments and exams will be posted on the course homepage.
Ethics
The strength of the university depends on academic and personal integrity. In this course, you must be honest and truthful, abiding by the Computer Science Academic Integrity Policy:
Report any violations you witness to the instructor.
You can find more information about university misconduct policies on the web at these sites:
Personal Wellbeing
Classroom Climate
I am committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone here has the right to be treated with dignity and respect. I believe fostering an inclusive climate is important because research and my experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. Please join me in creating a welcoming and vibrant classroom climate. Note that you should expect to be challenged intellectually by me, the TAs, and your peers, and at times this may feel uncomfortable. Indeed, it can be helpful to be pushed sometimes in order to learn and grow. But at no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity.
If you ever have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, I invite you to share directly with me or the TAs. I promise that we will take your communication seriously and to seek mutually acceptable resolutions and accommodations. Reporting will never impact your course grade. You may also share concerns with the Department Head (Randal Burns, randal@cs.jhu.edu), the Director of Undergraduate Studies (Joanne Selinski, joanne@cs.jhu.edu), the Assistant Dean for Diversity and Inclusion (Darlene Saporu, dsaporu@jhu.edu), or the Office of Institutional Equity (oie@jhu.edu). In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g. sexual harassment).
Family Accommodations Policy
You are welcome to bring a family member to class on occasional days when your responsibilities require it (for example, if emergency child care is unavailable, or for health needs of a relative). Please be sensitive to the classroom environment, and if your family member becomes uncomfortably disruptive, you may leave the classroom and return as needed.
Religious Holidays
For homework assignments, you must plan on using your late days towards religious holidays. If a holiday is longer than 2 days permitted late day per homework, we can make an exception for you to use more days subject to having late days left in your budget. You must inform the instructor as early in the semester as possible about your intention on using (more than two) late days for a specific homework during a religious holiday.
I extend the same curtousy to cultral/national holidays, or any other sort of engagement that you personally might have such as Athletics, Academics, etc. For instance, if you will be away on a conference, you can get permission to use more than two late days subject to the conditions stated above.
University Policy on Incompletes
Deadlines for Adding, Dropping and Withdrawing from Courses
Between October 12 and November 13, 2020, a student may withdraw from a course with a W on their academic record.
A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and then withdrew from the course.
For more information on these and other academic policies, see https://e-catalogue.jhu.edu/engineering/full-time-residential-programs/undergraduate-policies/academic-policies/grading-policies/