CAS CS412: MEAN Stack Application Design and Development
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit
CAS CS412: MEAN Stack Application Design and Development
About the course
This course provides an introduction to the architecture, development, testing, and deployment
of full-stack web-based applications, primarily in the MEAN stack . Included are technologies
such as non-relational data stores (i .e . mongoDB), RESTful, decoupled applications using
JSON as a data transport, and web sockets . Front-end work is done in Angular, and back-end
work is primarily in Node and Express . You’ll end up learning two languages: JavaScript and
Typescript.
The stack introduces several interesting concepts that you might not have been exposed to yet
in the CS curriculum, including:
• Non-relational, document-oriented data stores
• Asynchronous, non-blocking programming using Promises and thenables
• Architectures using internal application programming interfaces (APIs)
• Use of chained and lambda functions
• Working with third-party data sources via JSON APIs
• Deploying applications in a serverless (cloud) environment such as AWS EC2 and Lambda
• Testing decoupled, API-based applications using frameworks such as Mocha/Chai and Postman
Stackoverflow’s annual developer surveys (n=57,000 in 2020) shows that JavaScript continues
to be a dominant language in the industry, with Javascript in the #1 position in the Technologies
category. Typescript is #2 in the list of Most Loved Technologies . There is strong industry
demand for full-stack developers . In this context, the course will help prepare you for this
evolving workplace.
Text
We will use Kyle Simpson’s excellent 5-book series You Don’t Know JavaScript (YDKJ), which
is available at no cost from his GitHub repo: https://github.com/getify/You-Dont-Know-JS
Printed copies are also available through Amazon . Kyle is updating his set of books, and it looks
like he's going to charge for those, but these free, earlier versions are perfectly fine.
Tools
For coding we'll be using Webstorm, available free at https://www.jetbrains.com/webstorm . Grab
your license at https://www.jetbrains.com/community/education/#students (this is a free license
for everything Jetbrains makes).
I know some of you like to use editors such as Sublime, VS Code, or Atom, however these are
not full integrated development environments (IDEs) and you will quickly find that they are not
up to the task of building the sort of application we are looking at.
Piazza / GitHub / Gradescope / Zoom (and Blackboard)
We use Piazza as a repository for the slide sets for each class, for homework and lab
assignments, and for announcements . You should be enrolled already, so that when you log on
to the site you’ll see the course listed . Piazza is also our tool for questions and discussions; I’ll
post each week’s lecture materials as PDFs there for your reference . You'll use Gradescope to
turn in homework, which for the most part will be in the form of lab exercises, and to take any
quizzes that we might take.
Example code, and your project assignments, will be posted on GitHub. I realize that that’s a lot
of tech for just one course, but unfortunately each is good at one thing and not the others.
Homework/Assignments/Quizzes
Assessment is done primarily in short assignments and code reviews . You’ll end up doing eight
or nine coding assignments, starting small and getting larger as we progress . It’s important to
not fall behind, as there will always be another, more complicated, assignment coming, and the
pace during summer is crazy. My goal is to nudge you into a JavaScript way of coding and also
offer some advice on app architecture and structure.
Grades are not negotiable, but if you think that a mistake was made in grading, we’ll take a look
at it together. The course grading scale is numerical:
96-100 A 80-84 B 65-69 C
90-95 A- 75-79 B- 60-64 C-
85-89 B+ 70-74 C+
If your course grade happens to be close to a boundary, such as an 89.5, I’ll bump you up
unless your overall course work for some reason doesn’t justify it.
Note: This is a very large class and given the pace in the summer it isn't possible to grade each
assignment with any sort of rigor. You'll be graded mainly on effort, and we'll go over the
solutions to all of the assignments together in class after their due dates . I'm treating this more
as a workshop than a formal course . That said, it's really important that you turn in something
for each assignment . We'll take a quick look to make sure there's at least some effort there and
not just template code.
Getting Help
We want you to succeed in this class, and if you are stuck on something, reach out for advice
immediately. Your fi rst question should be on our Piazza forum -- that’s usually the fastest way
to get information . There are lots of ways that I can help, but you need to ask . Office hours will
be posted on Piazza.
Contacting me and office hours
The best way to contact me (apart from Piazza) is by email at perryd@bu .edu . You may also IM
me at perryd@bu.edu (iMessage). Contact info for your TA will be posted on Piazza.
Academic Conduct Code
The University the College take cheating very seriously. Cheating and plagiarism will not be
tolerated in any course . Cases will be referred to the Dean’s office and may result in loss of
credit for an exam or assignment or other disciplinary action . Please read the college’s policy at
http://www.bu.edu/academics/policies/academic-conduct-code and, if you have any question as
to whether something you are doing is in violation, please ask me about it.
Programming is a collaborative effort, and I fully expect that you will use resources such as
Google, fellow students, and our own discussion forum to learn the material and do your
assignments . We’ll discuss code and approaches in class, and I’ll occasionally post sample
code on GitHub that you are welcome to use as a starting point . However, I don’t want you to
simply copy entire programs that you find on the web and turn them in as your own work (that’s
the definition of plagiarism) . If you do use more than a line or two of someone else’s code
(including mine), make a note in a comment in your program to point to where you got it . Again,
if there’s any doubt, ask me.
2022-06-24