Climbing to New Heights with Software Engineering

16 Dec 2021

Introduction

Web programming: a new frontier. These are the voyages of ICS314, Fall 2021 - three sections of dedicated computer science students with unparalleled ambition to learn. Their mission: to explore new software and development frameworks. To seek better design, uphold coding standards and create clean, maintainable software. To boldy go where they have never gone before!

All joking aside, ICS314 is a fundamental course that teaches students practical applications of the following essentials of web programming:

Open Source Software Development

One of the best open source software that we used was the underscore library. The underscore library allows for manipulating data with minimal effort and in a very efficient way. A second group of open source software that we used was Semantic UI, React and Meteor. Together, these allow for the creation of web applications and can reduce the time it takes to develop a web application. They also make it easy to connect to a backend database (MongoDB) without actually having to do much setup of that database.

Configuration Management

We employed Git for managing our configation data and we used a Git repository to act as a source for how our application should be configured. This also helped us to deal with unexpected changes that could break the application.

Functional Programming

JavaScript, the main programming language for 314, is based on functional programming. Functions can be passed as arguments to other functions. Any function is a real object - leading to more flexibility in managing complex data.

Development Environments

We used IntelliJ along with eslint to make it faster to develop correct code for our web applications.

Coding Standards

These were promoted through the use of eslint. This helped to make it easier to work on a group project, since having all members adhere to the same coding standards, makes it easier to understand and use other people’s code.

User Interface Frameworks

We used Semantic UI that allowed for attractive looking interfaces without having to understand all of the CSS involved in order to produce the views in the user interface.

Agile Project Management

Agile Project Management refers to the use of resusable components that also provide a uniform way to develop objects. These objects are used to provide the connection between the user interface and the backend data.

Design Patterns

We made use of Model-View-Controller where the MongoDB database served as the model and HTML along with Semantic UI provided the view. React was used as the controller that gets data from the model and makes it available for the view.

We also used the Publish-Subscribe Design Pattern that has a similar function to the Observer pattern when we used Meteor.

We used a front controller design pattern (FlowRouter) to handle the authentication and logging in of users to Bowfolios and Digits.

Ethics in Software Engineering

We learned about the ACM Code of Ethics and Professional Conduct that are used to guide conduct of computing professionals. We learned that it is very important to develop applications that keep the data secure. This must override desires to make an application fancy looking or fun to play with.

Concluding Statements

As described above, there were many opportunities for growth in ICS314. Working while keeping ethical standards is paramount in any kind of software development. Web programming looks to be a growing area in the future as more services are offered online. This course gives students a good introduction into the important areas of consideration necessary to become an effective web developer.