Course Syllabus

Course Description

This is a course on software engineering using Python. It will include the creation of a dynamic website with a database backend using tools such as Digital Ocean or Google Cloud Platform, Bootstrap, Flask, Namecheap, PostgreSQL, RESTful APIs, Slack, and SQLAlchemy. It is also strongly focused on using tools to improve the quality of software development, including automated builds with make, source control with git and GitHub, unit testing with unittest, code coverage with coverage, continuous integration with Travis CI, and automated documentation with pydoc.


Prerequisites Computer Science 303E and 313E.
Lecture Time and Location

TTH 09:30 a.m. - 11:00 a.m. in GDC 1.304 (51569)

Textbooks The following textbooks are required for reference:
Instructor Fares Fraij
  • Office hours: M W 02:00 p.m.-03:20 p.m. (at GDC 4.310)
  • Contact:
  • Note: Most questions should be submitted to Piazza rather than by sending an email to the instructor.
  • Ahmed Al Nabil
    • Office hours: M 6:30 p.m.-7:30 p.m. at GDC 3.302
    • Contact:
  • Walter Xia
    • Office hours: M 10:00 a.m.-11:00 a.m. at TA station 4
    • Contact:
  • Note: Most questions should be submitted to Piazza rather than by sending an email to a member of the instructional staff.
Study Sessions Times and Locations

T 6:00 p.m. - 8:00 p.m. in (GDC 3.302) - lead by Walter Xia
W 6:30 p.m. - 8:30 p.m. in (GDC 3.302) - lead by Ahmed Al Nabil

Grade Basis Each student's overall raw score, out of 1000 points, is distributed as follows.
  • Projects: 350 points. (5 projects: 70 points for each project).
  • Tests: 440 points (2 in-class tests: 220 points for each test).
  • Quizzes: 210 points. (21 quizzes: 10 points for each quiz).
For details about the projects, tests, and quizzes, please check Knowledge Assessment.
Letter Grade The mapping from overall raw scores to letter grades will depend somewhat on the overall performance of the class. The nominal cutoffs are as follows.
A/A-   :  940
A-/B+ :  900
B+/B  :  870
B/B-   :  840
B-/C+ :  800
C+/C  :  770
C/C-   :  740
C-/D+ :  700
D+/D  :  670
D/D-   :  640
D-/F    :  600

These nominal cutoffs will not be increased; for example, a student achieving a raw score of 940 is guaranteed to receive an A in the course. However, these cutoffs might be lowered if necessary in order to improve the grade distribution.
Make-Up Tests
  • Please note that no make-up tests will be given in this course.
  • An unexcused absence from a test recorded as a score of zero (0).
  • If a student has a legitimate and properly documented excuse for missing one of the tests, the missing test score will be estimated as follows: 50% of the score of the other test and 50% of the scores of all of the quizzes taken to the date of the untaken test.
  • Examples of a properly documented excuse are a note from a physician or university dean indicating an illness or other extraordinary circumstance that prevented you from taking the test.
  • More complicated scenarios, e.g., where a student misses two tests for legitimate reasons, will be treated on a case-by-case basis.
Feedback Throughout the semester, please feel free to provide feedback to the instructor regarding any aspect of the course.
Acknowlegment I thank Professor Glenn Downing for sharing both his experience and course material with me.