Full Stack Programming on the World Wide Web

Course ID
CSIS-E2
Direction
1st, 2nd
Semester
Winter
Type
1st direction elective, 2nd direction elective

Learning Outcomes

The aim of the course is to provide graduate students with the basics and hands-on experience for designing and developing applications on the World Wide Web. The focus is on both serverand client-side development technologies, covering the full range of intermediate technologies, protocols, patterns and systems. By the end of the course, students are expected to be able to: 1. understand with minimal effort any technology, design pattern, protocol, tool, programming language or Web application 2. designing applications based on the
MVC framework or similar 3. implement dynamic applications using Javascript and NodeJS

Course Content

The course invests particularly in the hands-on exercise, emphasizing on the implementation of exercises and examples together with the teaching staff in the laboratory. The assignment includes the implementation of a complete web application while the examination is based on practical comprehension issues and not on memorization. The main modules in which the content of the course is structured are the following:
Module 1: Basic concepts of the web. The HTTP protocol.
Module 2: Client-side programming. The Javascript programming language. Event scheduling. The document object model DOM.
Module 3: Server-side programming. Programming Models, REST
Module 4: Introduction to NodeJS
Module 5: Markup Languages
Module 6: Hybrid Programming Models. The Ajax framework. Introduction to Javascript frameworks for front-end development such as JQuery, UI thread and web workers. Module
7: NodeJS and NPM / Python Flask. Advanced topics: modules, callbacks, promises, async-await, arrow functions, events, websockets
Module 8: Web Design Patterns
Module 9: Javascript frameworks: ReactJS
Module 10: Javascript frameworks: AngularJS
Module 11: Javascript frameworks: AngularJS
Module 12: Website performance considerations

General Skills

Search, analysis and synthesis of data and information with the use of the assorted technologies

Adaptation in new conditions

Decision Making

Independent work

Promoting free, creative and deductive reasoning

Learning and Teaching Methods - Evaluation

Teaching methods: On site
Use of ICT: eclass, estudieseclass, estudies

Activity Work load
Semester
Lectures 14
Lab exercises 12
Thesis 69
Independent Study 55
Total 150

Assessment

Assignment-based evaluation

Literature

-Marijn Haverbeke, Eloquent JavaScript, 3rd Edition: A Modern Introduction to Programming –
Mario Casciaro and Luciano Mammino, Node.js Design Patterns: Design and implement
production-grade Node.js applications using proven patterns and techniques, 3rd Edition –
Randy Connolly and Ricardo Hoar, Fundamentals of Web Development

Haas, Andreas, Andreas Rossberg, Derek L. Schuff, Ben L. Titzer, Michael Holman, Dan
Gohman, Luke Wagner, Alon Zakai, and J. F. Bastien. “Bringing the web up to speed with
WebAssembly.” In Proceedings of the 38th ACM SIGPLAN Conference on Programming
Language Design and Implementation, pp. 185-200. 2017. Harvard