Instructor: Prof. Seth Fogarty Email: sfogarty@trinity.edu
Office: CSI 270M Office Hours: See webpage
Meets: MW 2:30-3:45 Room: CSI 388
Join the Github Classroom
This is an upper division software engineering course for computer science majors, designed to introduce students to techniques for developing larger object-oriented computational systems. The course several core topics:
Purely Object-Oriented Programming: Through immersion in the Pharo dialect of Smalltalk, a purely object-oriented language that eschews the traditional IDE/debugger/compiler model, we will study the core strengths and weaknesses of OOP.
Design Patterns: In every programming language some tasks are straightforward, elegant, and simple. A design pattern is a general solution for some of the other tasks.
Software Engineering Frameworks: Collaboratively building large programs is hard. We will use the Scrum framework to organize requirements, decompose projects, and iteratively build systems in teams.
The primary objectives of this course are not to learn Smalltalk and become familiar with buzzwords. Rather, students should become better object-oriented programmers, better designers, and better teammates. Some themes are worth noting:
Iterative Development: Software implemented before being designed tends to be awkward, clunky, and difficult to maintain. Designs written before implementation tend to be ill-informed and unrealistic. This tension can be reduced through rapid prototyping and iterating between design and implementation.
Test-Driven Development: Every software project benefits from thorough testing, and Pharo particularly affords test-driven development: write tests firsts, then complete the code to satisfy the failing tests.
Refactoring: A consistent theme, the course will explore Pharo's unique refactoring tools, deep-dive into some design patterns by creating refactorable "bad code", and examine "technical debt" in Scrum.
One of the core concepts in Scrum is team ownership. Students will share ownership of not only of software, but the course itself. The course is fundamentally co-creative: students will not only develop software, but will explore chosen topics, create activities, and take ownership over parts of the course. There are three phases of the course.
While learning Pharo, students will complete a small individual project. Further, each student will independently explore one aspect of the language and give a short demonstrate to the class.
Small groups will focus on one design pattern and develop a sample code base. This will not be a code base that *uses* the design pattern, but one which can be refactored into the pattern as an in-class activity.
The final project(s) will be pitched by, voted on, organized, developed and presented by the students. Time permitting, each group will present a post-mortem focusing on pain points in the design, code, or process of the project.
Do not fret: assistance will be provided for all co-created class material.
This course will focus on qualitative, not quantitative, assessment. Materials will not be graded, but reflected upon. The final grade relies on completion of course activities and self-evaluation. The goal is to focus on exploration, learning, and collaboration over completing busy-work. The expectations for each grade are:
A - Complete all projects, contribute fairly to group projects.
B - Complete all projects, contribute to group projects in good-faith.
C - Complete most projects, provide more help than hindrance to group projects.
D - Engaged with the course for the entire semester.
F - Failed to engage with the course.
The intention of this grading format is to reduce anxiety, not increase it. If that turns out not to be the case, please talk to the professor.
Students are expected by abide the Trinity University Honor code, which forbids unauthorized collaboration or assistance. Collaboration is explicitly authorized.
Students are expected to attend class regularly. Students who will miss class should contact me before their absence, and complete all assignments ahead of time.
In line with the Trinity University policy on equal access and equal opportunity, this course will be made accessible to all students. Any student who feels they may need accommodations based on the impact of a disability or long illness should contact me and the office of Disability Student Services to discuss your specific needs. Any student who feels they may need accommodations due to remote learning, technology, environment, or other issues should contact me.