Steven P. Reiss

TEACHING


I have developed taught a variety of courses in the software area, generally with a focus on software engineering.  The descriptions below provide an brief overview and the links are to the most recent web pages for the course.   Note that I plan to be on sabbatical 2021-2022.
 

ACTIVE:

CSCI 1260: Compilers and Program Analysis

(2012-2020, 2017-2018, 2012-2013, 2011-2012, ... )

This course teaches students the concepts needed for creating interactive web and mobile applications using modern technology. It covers topics including user interface and web design, basic HTML, Javascript, and Php, frameworks such as VUE and React, mobile frameworks such as NativeScript, security, testing, scaling to handle large numbers of users, internationaliation and accessibility. Students in the course work in teams to build a working web application for an outside client. Clients have included campus organizations, non-profits, local companies, and Brown enterprenurial students.

CSCI 1320: Creating Modern Web and Mobile Applications

(2020-2021, 2019-2020, 2018-2019, 2017-2018, 2016-2017, 2015-2016, 2013-2014, 2012-2013, 2011-2012, 2010-2011)

This course teaches students the concepts needed for creating interactive web and mobile applications using modern technology. It covers topics including user interface and web design, basic HTML, Javascript, and Php, frameworks such as VUE and React, mobile frameworks such as NativeScript, security, testing, scaling to handle large numbers of users, internationaliation and accessibility. Students in the course work in teams to build a working web application for an outside client. Clients have included campus organizations, non-profits, local companies, and Brown enterprenurial students.

CSCI 1600: Embedded and Real Time Programming

(2019-2020, 2017-2018, 2016-2017, 2015-2016, 2012-2013, 2010-2011, ...)

This course teaches the concepts needed to create software-controlled embedded and real time systems. Topics include basic hardware and low-level software concepts, real time scheduling, modeling real time and embedded systems, and proving properties of the systems.  We have converted a 1979 pinball to run using an Arduino as part of this course. 

CSCI 1951U: Software Engineering Large Systems

(2020-2021)

This course is designed to teach software engineering techniques that are used to create moderate to large sized programs. This includes design methodologies that scale and are geared toward larger, long-lifetime systems with multiple designers. It includes tools to assist the programmer and to assist and manage programmer teams. 

CSCI 2340: Software Engineering

(2018-2019, 2016-2017, 2011-2012, ...)

This graduate course provides an overview of particular topics relevant to software engineering with a strong emphasis on research directions and where the field is going. It is designed both to familiarize the student with current research directions and where the field is going, and to lay the foundations for students wising to do research in the area.

PREVIOUS (but still being taught by others):

CSCI 0190: Accelerated Introduction to Computer Science

This course combined the first two traditional courses (csci0150 and csci0160, object-oriented programming and algorithms and data structures respectively) into a single course for students with a prior programming background. The current invocation is a taught quite differently.

CSCI 0931: Introduction to Computation for the Humanities and Social Sciences

(2011-2012, 2010-2011, ...)

 This course looks at problems in the humanities and social sciences that can be solved using appropriate data analysis and computation. It concentrates on application problems and not on programming or mathematics. This course is the result of a NSF CPATH project we have been working on.  It is now taught as CSCI 0030.

CSCI 0320: Introduction to Software Engineering

 This is a sophomore level software engineering course covering both advanced programming topics such as threads, user interfaces, web applications and software architecture, as well as project engineering and agile programming. Students design and write a team project. Homework assignments other than the project have been chosen to demonstrate different applications including computational biology, physics and natural language processing.

CSCI 1950i: Designing, Creating, and Developing User Interfaces

(2018-2019, 2016-2017, 2011-2012, ...)

This was a new course on user interface design and development. In addition to covering basic HCI, it is project-based with an emphasis on group work. It is now taught as CSCI 1300.

PREVIOUS (taught since 2000, no longer being taught):    

CSCI 0009-03: Building a Web Application

This is a freshman seminar where the students will work as a team to build, test, and deploy a web application. 

CSCI 1780: Programming Parallel and Distributed Systems

 This course covered the basics of distributed systems, web computing, and parallel computing using MPI.

CSCI 1900: Software Systems Design

 This ia a senior-level project course where students work in teams of ten to learn software engineering and to build a useful system.

CSCI 2310: Human Factors and User Interface Design

 This is a graduate seminar in covering various topics in user interfaces. The course is taught alternate years and tends to cover different topics each time it is taught. Possible topics this year include device-independent user interfaces and 3D desktops.

CSCI 2330: Programming Environments

 This is a seminar course on topics related to programming environments. This year we studied a collection of 30 papers relating to future directions for programming environments and concentrating on program analysis and verification.


Last updated: April 8, 2021