Web Programming

Subject description

Lectures:

Introduction to Web Programming

  • World Wide Web, Internet, client/server architecture, full-stack development, development methodology, Git,
  • Web standards HTML, CSS and Bootstrap,

JavaScript – Web programming language on the client and server side

  • Language development, higher order functions, regular expressions, modules, JavaScript and web browser, DOM, event handling, HTTP,
  • Node.js, npm, file server, MVC and various environments (Docker, cloud hosting),

Backend and data access

  • Database model, schema, local and hosted database, REST API, method, response, status of a request, (geographic) qury with GET,
  • Adding data with POST, updating with PUT and deleting data with DELETE, documenting with Swagger and OpenAPI,

User interface

  • TypeScript, Angular (modules, components, services, pipes, expressions), backend communication,
  • Angular SPA, routing, navigation, nested components, geolocation, trasnfer data between components, security exceptions, working with forms, modal window, two-way binding,
  • Identity verification, one-way password encryption, JWT token, authentication API, securing API access point, authorization when updating, Swagger documentation update, authentication service at the client side, registration and login, browsing history, user settings in browser,

Decentralised applications and blockchain

  • DApps, blockchain, Ethereum network, Ether, gas, calls, transactions, EVM, smart contracts,
  • Solidity (state variable, constructor, functions, testing, multiple inheritance), libraries, interfaces, ERC20, Truffle,
  • Web3 (user interface, testing with Ganache, deploying smart contract, MetaMask),

Additional functionalities

  • Web application security, OWASP, the trend of top security risks of web applications, recommendations for developers, security check with OWASP ZAP,
  • Testing, functional tests with Selenium, review with Lighthouse, Pregressive Web Applications (PWA), offline browsing, caching remote data.

Tutorials:

Laboratory project: programming of distributed full stack web application, divided into individual phases (static pages, client-side code, server-side code, services). The students will develop the projects that will be introduced with the final presentation.

The subject is taught in programs

Objectives and competences

The main course objective is to introduce the students of computer and information science the technologies, connected with the full stack development of web applications (on the server and the client-side). The students shall be equipped with knowledge to independently develop such applications.

The competences that students gain are:

  • knowledge of static technologies HTML, CSS, XML,
  • knowledge of JavaScript programming language for client-side development
  • knowledge of Node.js technology (JavaScript proramming languae) for server-side development,
  • knowledge of MongoDB NoSQL database
  • web service development,
  • employment of the model-view-controller architecture,
  • consideration of security principles,
  • knowledge of decentralized application development with blockchain communication.

Teaching and learning methods

Lectures with practical examples/demonstrations, making of laboratory project (guided by the assistant).

Expected study results

After the completion of the course a student will be able to:

  • understand the most common technologies for web application development,
  • understand and employ MVC architectural style in web application development,
  • use REST to access database,
  • develop full stack application on the client and server side
  • use online sources and documentation in web application development,
  • transform server-based application to single-page-application by analytical approach,
  • connect existing application to a blockchain,
  • use version control system and support tools for collaboration in teams,
  • use ICT, written reports and communication and organization skills in team collaboration.

Basic sources and literature

  1. Robert W. Sebesta: Programming the World Wide Web, Pearson Education, 2014.
  2. Paul J. Deitel, Harvey M. Deitel, Abbey Deitel et al.: Internet & World Wide Web: How to program, Pearson, 201
  3. Marijn Haverbeke: Eloquent JavaScript: A Modern Introduction to Programming, 3rd edition, No Starch Press, 2018.
  4. Simon Holmes: Getting MEAN with Mongo, Express, Angular, and Node, 2nd edition, Manning Publications, 2019.
  5. Cedric Exbrayat: Become a Ninja with Angular, Ninja squad, 2021.
  6. Roberto Infante: Building Ethereum DApps: Decentralized Applications on the Ethereum Blockchain, Manning Publications, 2019.

Stay up to date

University of Ljubljana, Faculty of Electrical Engineering Tržaška cesta 25, 1000 Ljubljana

E:  dekanat@fe.uni-lj.si T:  01 4768 411