Topics in Computer Science: Industry Skills

NOTE: You may want the 2020S site.

Website Notes: Use the links at the top to reach critical pages or on the side to access recent posts or specific categories’ posts (like workshop materials vs. assignments).

CPSC 436I (Topics in Computer Science, undergraduate: Industry Skills) is a 3 credit course in 2019S (across the whole summer, meeting on alternate Saturdays for everyone and weekly either Tue or Wed early evening for individual sections).

The course is aimed at students with 3rd year standing who want technical skills relevant in industry for co-op preparation or career development. As such, most seats will be reserved to 3rd year students, but a few will be available to 4th year students. (Both 3rd and 4th year students are welcome on the waitlist if the course fills. Waitlisted students who miss a Saturday workshop will be removed from the waitlist.)

You can find a detailed description below.


Course description: Technology in the computing industry moves quickly, and “hot” technology may not be appropriate in conceptually-driven CPSC courses. Experience with these technologies prepares students for entering co-op and industry positions and builds context for the conceptual content of other courses. A personal project with current technologies also serves as a portfolio piece that can help students launch fulfilling careers.

In this course, students design, implement, and release a project in teams of 2-4 using a suite of related, current, and in-demand technologies. Specific technologies will change over time, but a current example would be full-stack web development using Meteor, with technologies including HTML, CSS, JavaScript, React, MongoDB, NodeJS, and release engineering systems. These are taught with a “mobile-first” focus and via cloud-based technologies like AWS and heroku.

To deepen the career preparatory experience, the course is primarily taught via a series of interactive, hands-on workshops led by industry experts who are ideally departmental alumni, held on alternating weekends. Industry experts give a 2 hour interactive introduction to a technology, a 30 minute discussion of their career path and guidance for early-career professionals, and support facilitation of a 2 hour hands-on session to work with the technology. Students also spend 30 minutes presenting their work in progress to other teams in their lab section. By the second workshop, students propose a project that must integrate technologies from each of the first five modules. (See below for details about the sixth, non-technical module.)

Along with the workshops, students also attend one 2-hour weekly evening lab each week. The labs offer hands-on work time for individual assignments and the group project and supplemental instruction time.

Part of the second half of the workshop and the second lab of each unit will also be used for demo/review-based grading by TAs (assignments and project) and peers (project). The code reviews serve as a forcing function for project progress and to build community in the course, encouraging students to contribute to each others’ progress.

Finally, the term closes with a final conference-style weekend session where students present their work to their peers, the course staff, and departmental and industry guests.

Students’ work products in the course include: the course project done in teams of 2-4 and small individual assignments for most modules to demonstrate basic proficiency with the technologies. For the project, students will submit their final running project and source code and present about the project’s result and process. They will also produce interim products of various sorts, including internal and external code reviews, team member evaluations, and interim presentations and demos.

We will offer this course as CPSC 436I in 2019S to 72 students. The six modules expected are: HTML5/CSS/JavaScript intro, React and Meteor front-end, NodeJS and Meteor back-end, NoSQL and MongoDB, release engineering, and networking and portfolio-building.