WELCOME

As your instructor, it is my pleasure to welcome you to CSE 416. It is important to me that every student feels welcome and be set up for success. Entry into this course is dependent upon you having completed all course prerequisites so as to be properly prepared for our course work. We will work on the assumption that you have experience with making full-stack Web applications for the NodeJS platform. Students in this course will work in teams to develop MERN-stack applications and so should be skilled in both front-end and back-end development with JavaScript using Mongo/Express/Node/React. Our first quiz, held during week 2, will be on the course policies outlined in this syllabus as well as the contents of our textbook's Chapter 1. As the semester progresses, be sure to periodically check the course schedule page for all materials and changes as the semester moves along. All grades will be posted to Brightspace. Finally, all students enrolled in this course should have U4 standing, and thus have experience in 300-level classwork, and so must be on track to graduate this semester or next.


FOCUS

It is important to me that all students feel they can learn our course material and improve their skills. You can get better at anything using the proper approach, and perhaps the most important component is focus. Note that learning to properly focus is maybe the most important skill students should develop. Doing focused work is how one can achieve great things. But focused work can be exhausting, and being able to do focused work takes practice. Note that schooling is about learning, but it’s also about practice and developing good habits. Doing great, focused work is habit-forming. Doing mediocre, unfocused work is also habit-forming. If you look at the people who are able to solve the most complex problems in the world of tech, they all share in their ability to wrangle their brain for focused work. Note that different people have different work habits and what may work for some may not for others, but I'll share my own experiences:

  • I take on the most complicated tasks first thing in the morning - when the day begins and I've had my first cup of coffee, with my mind clear, I can take on the most complex problems I need to solve. As the day moves along, I am less able to do so. Working at night, and especially late at night, is fine for me to work on repetitive-type tasks where complicated decisions are already made, but at some point it's diminishing returns and I'm not solving anything new.
  • I like Top-down then bottom-up problem solving - When I'm focused on a problem, I can see the big picture and how all the big pieces will fit together from the top level of abstraction, and then break them down (called decomposition) into smaller problems that I can then examine at the most fundamental level and solve separately bottom-up. This is called Decompose-Solve-Assemble and is an essential skill for developers and takes careful, disciplined focus.
  • I need to block out all distractions - I find I can only solve complex problems when all distractions are blocked. No TV, no YouTube, no Social Media, even no music. Some people can do focused work while listening to music, I cannot, it simply causes my mind to wander into the song and my brain works best while working on only one thing at a time. Complex problems require complex connections in ones brain's working memory, and so long uninterrupted focused work has advantages.
  • I need lots of practice - As you move along and become a Software Engineer the problems become more and more complex, and so your ability to focus is more and more important in order to solve more and more complex problems. Just as one may go to the gym regularly to get into good physical habits to improve ones health, strength, and fitness, which benefits ones daily life, you can develop and maintain your ability to do focused work. Again, it can be exhausting, but it is a skill that one can continuously get better at.

FAIRNESS

As your instructor, it is important to me that students feel this course is run in a fair manner. Nothing makes people angrier than when a system is perceived as unfair. As such, note that our course policies and rules regarding assignments, quizzes, and exams that are set at the beginning of the semester will not change and that all students are subject to the same policies without prejudice.


FEEDBACK

In order for me to do my job as your instructor, it is important that I know how a semester is going from my students' perspective. Should you ever feel you have been treated unfairly by me or a Teaching Assistant or have received an improper grade, please let me know right away. Corrective action regarding any issue is always best handled immediately and not left unresolved. Additionally, students are encouraged to provide course feedback throughout the semester regarding the course's strengths and weaknesses. It is my hope to make this course better every semester I teach it and student feedback is always read.


AI

We wish to use a modern approach for software engineering in this class and such an approach these days would likely make use of AI. Note our course rules regarding AI:

  1. Teams may use AI to help with:
    • Project Setup, including CI/CD mechanisms
    • Design Decisions (architecture, data, code, and otherwise)
    • Code Authoring
    • Test Setups and Bug Hunting
    • Content/Asset Generation (i.e. images, icons and such)

  2. When using AI:
    • Teams must document all uses of AI in their project via comments in Source Code and notational messages in Repository Commits
    • Team members are responsible for all design decisions they make and all code and content they commit, including that done with the help of AI. Therefore, team members must fully understand their own software architecture and component designs as well as all code they commit and will be expected to explain it upon command and will be responsible for its maintenance throughout the development process.

  3. Students may not use AI while taking any course Quizzes or Exams or during either the Minimum Viable Product Presentation or the Finished Product Presentation. Violating these rules will be taken seriously and such violations will be referred to the Academic Judiciary regarding Academic Integrity.

  4. No other person should be making contributions to your project. Each team has four members working with the assistance and power of modern AI software. Teams may not have any other developers working on the project apart from those who have created public APIs available to all.

  5. Students should understand that these rules only apply to Sections 02 and 03 of CSE 416 for the Spring 2026 semester and that other sections and courses may all have completely different policies and students should apply appropriate policies to those sections/courses


COURSE DESCRIPTION


COURSE OUTCOMES

At the end of the course you should have the following knowledge and skills:


PREREQUISITES


CREDITS

This course earns students 3 credits.


COURSE TOPICS


LECTURES



INSTRUCTOR (Office Hours in NCS 216)



GRAD TEACHING ASSISTANTS



OFFICE HOURS

Start Time End Time MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY


TEXTBOOKS



GRADED COMPONENTS


    GRADING BREAKDOWN


    THE PROJECT

    This semester, students will work in teams for four and will develop a Web App with a fully integrated back-end that will be deployed for real for the world to use. The technology choices for teams this semester will be limited to a degree but you will get some choice regarding some of the things you use. The hope is that it prevents teams from spinning their wheels while deciding which platforms/languages to go with. All teams will be required to make a MERN stack application using NextJS and TypeScript. M may mean MongoDB or MySQL. Express, React, and Node are required. You may choose additional APIs that serve your purposes (like for CSS), but we will all use the same basic platform. There may be things you don't like about these tech choices but they are the common parlance among our undergraduate students (and they are quire popular) so that makes them the best choice for our purposes.

    TEAM PROGRAMMING

    One of the principles that will be emphasized this semester is team programming, which involves multiple programmers working collaboratively on the same task. This is an effective technique for preventing stalls in the development process. While working on the team project, students will be encouraged to do all programming using this technique and in addition, for all project responsibilities, teams will designate subteams of developers who will aid in the completion of a task.

    TEAMS

    Students may form their own teams if they wish. Note that teams will be made up of four students. To make a team, first choose an aptly named color that suits your team. Choose one that is not copyrighted (not owned by crayon or paint companies, for example). Once your color (and thus team name) is selected, specify your team name and members with roles, in the shared sheet. Note that you should set the fill color for your cells to your team color, and make sure the text color is a color with enough contrast such that it is neat and legible. Should your team be in need of a forth member, just place a '?' in the empty cell.

    Students not assigned to a team by the second lecture will be placed by the instructor. If you are to form your own team, I strongly advise forming teams around similar schedules. For example, past experience has shown that commuting students work well together because they may choose to meet and work off-campus rather than on. Note that should any changes to a team occur, the instructor must immediately be informed, as this is the only official teams list.


    ACADEMIC INTEGRITY


    MAKE-UP COURSEWORK

    There will be no make-up quizzes or activities, though you get to drop one of each. Progress Reviews are all online and all team members must always attend, there are no make-up appointments for these. All students must also attend both presentations. Should extenuating circumstances arise these events can be rescheduled at the discretion of the instructor to a day/time suitable for all. Make-up exams will be given only in extenuating circumstances (e.g., doctor's note stating that you were ill and unfit to take the exam). Students who miss an exam for a valid reason must contact the instructor immediately to take a make-up exam at the earliest possible time; specific arrangements will be made on a case-by-case basis. All assignments must be submitted on time. Late assignments will not be accepted unless a valid, documented proof is provided, i.e. a doctor's note.

    ACCESSIBILITY SUPPORT


    CRITICAL INCIDENT MANAGEMENT

    Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Student Conduct and Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Faculty in the HSC Schools and the School of Medicine are required to follow their school-specific procedures. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.