This course introduces students to the world of internet and networked systems development. Concepts related to distributed systems development; concurrent and asynchronous processing; process communications and network transport protocols; distributed application architecture and design; deployment, monitoring and debugging of internet-based systems; and web of things development will be covered.
This course explores the concepts and technologies that are used in modern Internet systems, and provides the necessary skills and knowledge of software technologies needed for creating Internet/Web services. It is designed to expose students to web content presentation and generation technologies, programming, and building multi-tiered client/server web applications.
One of:
To be successful in this course, students are expected to have practical experience building multi-file/multi-component software projects. In particular, students should be comfortable working with data structures, designing classes and class interfaces, and writing software modules that form part of a larger application.
Students will experience the design and construction of internet-based systems through hands-on interaction with course material. The course will provide students with a basis of theory upon which to reflect upon experiences: designing and building server-side systems that must communicate with client systems via internet protocols; designing and building client systems that operate and interact with the server system concurrently and asynchronously; debugging process timing and network failure issues; and understanding the network designs and protocols that enable the modern internet.
Upon completion of this course, students should be able to:
Content Delivery. This course is taught in an experiential format. While there are lectures on the conceptual content (network models, application architectures, failure modes, protocols, etc.), these are delivered alongside practice lab and demo sessions and hands-on work on a semester-long individual project that provides direct experience with a number of these concepts. Where it is impossible to present conceptual content through the project, demonstrations during class and assignments are used to help make conceptual content clear.
Critical Reflection. With an experiential format, research has shown that students retain material better when they reflect critically on their learning. As such, students will be expected to write weekly reflection journal entries, as well as a short personal reflection essay at the end of the semester.
Assessment. There are no exams in this course. In fact, assignments and project work do not have numeric grade values either. Instead, at the midterm and the final, you will be expected to write a reflection-based grade proposal and defense. In this short paper, you will indicate what letter grade you feel you have earned in the course and defend that grade to me by reflecting on specific examples of your work, learning, and accomplishments.
This course generally covers some combination of the following topics: