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 .  Youll  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

Stackoverows 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 Simpsons excellent 5-book series  You Dont 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 ne.

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 nd 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 youll see the course listed . Piazza is also our tool for questions and discussions; Ill

post each weeks 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 thats 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 . Youll end up doing eight

or  nine  coding  assignments,  starting  small  and  getting  larger  as we  progress .  Its  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, well 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,  Ill  bump you  up

unless your overall course work for some reason doesnt 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 rst question should be on our Piazza forum -- thats usually the fastest way

to get information . There are lots of ways that I can help, but you need to ask . Ofce hours will

be posted on Piazza.

Contacting me and ofce 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 Deans ofce and may result in loss of

credit for an exam or assignment or other disciplinary action . Please read the colleges 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 . Well discuss code and approaches in class, and Ill occasionally post sample

code on GitHub that you are welcome to use as a starting point . However, I dont want you to

simply copy entire programs that you nd on the web and turn them in as your own work (thats

the denition of plagiarism) . If you do use more than a line or two of someone elses code

(including mine), make a note in a comment in your program to point to where you got it . Again,

if theres any doubt, ask me.