Redesign and restructure EECS 3311: Software Design at York University

0 have signed. Let’s get to 1,000!


Every year for almost a decade, students in Computer and Software Engineering are required to take EECS 3311: Software Design, which has been fundamentally flawed from its inception.

TL;DR: Having to learn to use obsolete tools takes away from the course's goals. A Software Design course should focus on Design Patterns instead of a proprietary programming language not used in industry or academia.

The Problems.

  1. The programming language used: Eiffel. Eiffel is very rarely, if at all, used in industry or academia (outside of York University). As such, there are virtually no resources available, outside of a generic wiki,  to help students look at examples and overcome common problems. We believe that Learning the Eiffel language does not enrich the curriculum and provides no benefit to students as candidates in the job industry.
  2. The syntactical challenges of both Eiffel and the non-modern IDE being used lends to the vast majority of the course being about the language itself, which is not the purpose of this course. Eiffel’s syntax in particular opposes almost every leading programming language, making knowledge of Eiffel not transferable to other languages.
  3. EECS 3311 uses proprietary technologies such as ETF and the MathModels library, which again require a substantial learning curve, have no relation to the actual purpose of the course, and not usable in the real world as they are completely proprietary to York University. If students do not know how to use these tools, they could potentially fail the course due to concepts unrelated to the actual course content.
  4. The marking scheme does not properly reflect students' understanding of the course’s core concepts. This problem is due to numerous issues. Most importantly, students are tested on their knowledge of Eiffel syntax and the implementation of particular algorithms instead of their understanding of Software Design Patterns. Additionally, students may get a failing grade while passing all test cases if they do not pass the instructors' 'hidden' test cases, which can cause many issues with grading. Particularly, this leads to the students attempting to create many test cases, which are not necessarily effective. Many students in this course have not taken any software testing courses as of yet. In effect, students are being told to test their software with very little knowledge of proper testing patterns. This course is not a Software QA or testing course, the heavy focus on software testing is mis-placed.
  5. EECS3311 places a heavy focus on design by contract. Apart from brief mentions, Test-Driven design or any other type of software design is not explored in depth. This heavy focus on design-by-contract is used as a justification for using the Eiffel language. However, we believe that students should also be able to learn to implement design by contract without explicit contracts - doing so should give students the ability to take away from the design by contract ideology and implement it in the real world with industry-standard programming languages.
  6. In summary, the course does not focus on Software Design, in contradiction with its name. Instead, it focuses on gaining knowledge of the semantics of proprietary, obsolete tools and heavy software testing (again - with students that do not know proper test plans and testing patterns).

The Solution

This course should be rebuilt and restructured. It should get rid of the Eiffel language in favor of industry-standard technologies. The course should have a majority focus on the various software design patterns, instead of quality testing and algorithm analysis.

Particularly, the labs should be focused on the translation of a simple program outline to implementation using the taught design patterns. Then, grading should be based on the design itself instead of multitudes of test cases.

On behalf of all the students who have taken this course, we hope that it can be changed for the better for the benefit of future students.