CS373: Software Engineering

Fall 2018: 51680 & 51685


What is this class about?

  • This is a course on software engineering.
  • There is intentionally a big disconnect between the lecture material and the projects.
  • The lectures will be about Python, JavaScript, Java, relational algebra, SQL, refactoring, and design patterns.
  • The projects will be about your team figuring out on its own how to build a dynamic website with a RESTful API and a database backend, using many, many tools that will not be taught.
  • It is also strongly focused on using tools to improve the quality of software development.

What are estimates of the required effort to do well?

  • 1-2 hours per week of reading/studying
  • 5-10 hours per week of programming
  • 1,000-3,500 lines of code

Where can I find the class materials?

  • All of the examples, exercises, and notes will be on GitLab.
  • It's very useful to clone that repo. I'll be adding content as we progress through the class.
  • All of the quizzes will be on Canvas.
  • All of the tests will be on HackerRank.

What will the quizzes be like?

  • We'll start each day with a 5 min, multiple-choice quiz on Canvas.

What will the lectures be like?

  • I'll use the Socratic Method to have a discussion with you about some part of the material, often involving a piece of code.
  • I will always be courteous and respectful regardless of your level of experience, and you will find that those interactions will really get to the issues that you're having trouble with and you will learn a lot more.
  • That then makes the class highly interactive, so I respectfully request that you refrain from using your phones, tablets, or laptops during class unless we're doing an exercise.
  • We'll also do some exercises on HackerRank.

What will the exercises be like?


What will the projects be like?

  • The first project will be in Python on HackerRank.
  • The remaining four projects will be in teams of five or six students. Each team will be the customer of another team.

What will the tests be like?

  • All of the tests will be in Python, Java, and SQL on HackerRank.

Can I ask questions outside of class?

  • Piazza will allow you to ask questions outside of class that everyone will get to see and that when I or the graders answer, everyone will be able to benefit from.
  • Please don't be shy about asking questions on the forum. No technical question is too basic to ask when learning new concepts and everyone will benefit from seeing the questions and the answers.
  • It's also possible for you to answer questions on that forum and that's also very valuable.
  • If you have a question that is personal in nature, e-mail me via Canvas.

What is expected of me?

  • I would like this class to feel like a community. To that end, I request that you follow these guidelines.
  • Communicate with me about any problems you're having or about any special help that you might need, and please make it a point to communicate with each other, as well.
  • Interact heavily during the class. Whatever questions you have don't hesitate to bring them up. I am very confident that others in the class will have the same questions. No question about the subject is inappropriate, regardless of what background you may be missing. Getting answers to your questions is the only way to really get value out of the class.
  • Be on time at the start of class.
  • I very much welcome any suggestions you may have for improving the class.
  • You will get out of this class what you put into it. Please be positive, proactive, and respectful in making this class what you want it to be.
  • Come to office hours!!!

Copyright © Glenn P. Downing, 2008-2018