ECE 366 - SW Engineering & Large Systems Design

Spring 2022, Mondays 6-9pm ET, Room 104 in 41CS NAB

Prof. Rob Marano (rob@cooper.edu)

The Cooper Union

Catalog Description:

This course teaches about the development stages of large, robust, expandable software systems developed as part of a team. Topics include project management, capturing requirements, system design, UML, program design, testing, delivery and maintenance. The class will develop a large project as a team using Java throughout the semester. Tools, libraries and techniques necessary for the project will be covered in class,e.g., Eclipse, Javadoc, XML, SOAP, servlets, threads and processes, Swing, JUnit, mySQL, JDBC, etc. The specific resources might change from semester to semester.

Credits: 3 credits (45 contact hours)

Prerequisites: ECE365 (Data Structures and Algorithms II).

Required for EE students in the Computer Engineering track.

Textbooks: None required.

References: The lectures will be based on the latest published research papers in journals, conferences and reference books. Suggested textbooks and respective presentations for extra reading and guidance include the following. Lecture materials will come from either or both of these textbooks.

Project:

This course requires you to choose, design, and develop a major software project which gives you the opportunity to put into practice modern software engineering principles and motions. Projects will be collaborative consisting of three (3) students; other team sizes require teacher approval. Some suggested projects will be shared, but you will have the opportunity to propose your own group project. Web applications (React, Angular, etc) as well as mobile applications (iOS or Android) are welcome and encouraged, should time allow. As a note for professional development, corporate recruiters explicitly search for candidates with the demonstrable (GitHub) experience of a major completed project.

Grading:

Final Project 40%; Final Presentation 20%; Assignments, Sprint check-ins, & Quizzes 30%; Class participation 10%

Goals and Outcomes:

This course will provide insight into the procedures of software engineering at scale used by companies and organizations so that teams of developers can create large, robust, expandable systems. Students will learn through firsthand experience what it is like to collaborate with a team of developers to create a useful system, employing good design principles so that the system can be easily learned, used, maintained, and expanded in the future. Students will be comfortable using many Java and related tools to aid their development.

Students will learn the following:

  1. Knowledge of the process and procedures used by professional software engineers;
  2. Familiarity with many important tools, techniques, and resources available to software engineers to craft secure and reliable solutions;
  3. Ability to analyze a problem, design a solution, implement it, and test it.
  4. Experience developing a large, robust, expandable system as part of a team.
  5. Familiarity with ethical issues related to software engineering, e.g., confidentiality and safety.

Critical Topics:

Course GitHub repository:

Project/Code Repo - https://github.com/robmarano/ece366_at_cooper 

Discussions - https://github.com/robmarano/ece366_at_cooper/discussions 

Microsoft Teams Course Files - General (ECE-366-1-Software Engg _ Lrg Sys Design-2022SP)

Schedule

Check our Microsoft Teams Channel for specific assignments.

Week 1 - 2022-01-18


Week 2 - 2022-01-24


Week 3 - 2022-01-31

Week 4 - 2022-02-07


Week 5 - 2022-02-14


Week 6 - 2022-02-28


Week 7 - 2022-03-07


NO CLASS, Week of March 14th

Week 8 - 2022-03-21


Week 9 - 2022-03-28


Week 10 - 2022-04-04

Week 11 - 2022-04-11


Week 12 - 2022-04-18


Week 13 - 2022-04-25


Week 14 - 2022-05-02


Week 15 - 2022-05-02 - FINAL CLASS

Reading Materials

Getting started with distributed coding

Testing (in Java)