Skip to content

A compilation of school projects I've done at SUTD consisting of various programming languages and frameworks.

Notifications You must be signed in to change notification settings

WindJammer6/17.-Projects-from-School

Repository files navigation

17.-Projects-from-School

A compilation of school projects I've done at SUTD consisting of various programming languages and frameworks.

Table of Contents

Here are some of my school projects:

  1. Generative Design Project with Rhinoceros and Grasshopper
  2. Parametric Design Project with Rhinoceros and Grasshopper
  3. Streamlit (Python) and Firebase Web Application Project for a Karaoke Event
  4. Sketching Chaos, Transient Chaos and No Chaos Graphs from the Lorenz Equation (Chaos Theory)
  5. Arcade Minigames (Python) Project
  6. SUTD's Design Thinking and Innovation (DTI) module project
  7. Computer Aided Design (CAD) of Molecules using GaussView and Avogadro, with WinSCP and MobaXterm for Quantum Chemistry module
  8. ROOT FAQ Forum using Figma and Nextjs

Summary about the project: The project task is to create a generative design in Rhinoceros and Grasshopper using techniques developed aiming to produce something that cannot be recreated using conventional media. The theme of this assignment is “Beyond Human Aptitude”.

In the '1. Generative Design Project with Rhinoceros and Grasshopper' folder, there are 3 files, consisting of the Grasshopper code, PowerPoint slides and PowerPoint slideshow. Used Photoshop to create the GIF animations in the PowerPoint slides to capture the physical changes in the 3D model as a parameter in the Grasshopper code is changed.

Source(s):
(See the PowerPoint slides)

Programming Languages used:
nil

Frameworks used:
My Skills


Summary about the project:
The project task is to create a parametric design model using the techniques developed. Produce a scalar field family of surfaces and present variation matrices mapping interactions between parameters. Categorize instances along qualitative and quantitative dimensions and after selecting your favorite option, use 3D printing to produce a physical prototype using a 3D printing software, Ultimaker Cura. The theme of this assignment is “Mapping Variations”.

In the '2. Parametric Design Project with Rhinoceros and Grasshopper' folder, there are 3 files, consisting of the Grasshopper code, PowerPoint slides and PowerPoint slideshow. Used Photoshop to create the GIF animations in the PowerPoint slides to capture the physical changes in the 3D model as a parameter in the Grasshopper code is changed.

Source(s):
(See the PowerPoint slides)

Programming Languages used:
My Skills

Frameworks used:
My Skills


Summary about the project:
The project task is to create a supporting technology project to support a Karaoke Event (titled SingUTD), organised by me and other members of the student committee of our school. To meet the tasks required, I have decided to create 2 Web Applications using Streamlit (Python Framework), linked together via Firebase (API)'s Realtime Database. The first Web Application allows users to submit their name and song choice via a Streamlit (Python) website link, where the data will then be added into the Firebase (API)'s Realtime Database, where the other Streamlit (Python) Web Application will draw the data from to display the data in a song queue on a projected screen during the Karaoke Event to show whoever is the next singer and their song choice.

In the '3. Streamlit (Python) Web Application Project for a Karaoke Event' folder, there are 4 folders:

  • 'Streamlit (Python Framework) learn' - consists of my learning journey of the Streamlit (Python Framework) (Youtube playlist where I learnt the Streamlit (Python Framework) from: https://www.youtube.com/playlist?list=PLa6CNrvKM5QU7AjAS90zCMIwi9RTFNIIW by Nileg Production (only up till the 14th video in the playlist)
  • '(deployed, using Firebase as database) Streamlit (Python Framework) and Firebase ROOTech Karaoke Night project' - consists of the files that are required for the deployment of the main version of the Streamlit (Python Framework) Web Application Project with the Firebase (API) itself. The deployed Streamlit (Python Framework) Web Application and Firebase (API) Project is linked to this Github account. 18.-Deployed-Streamlit-Python-and-Firebase-Web-Application-Project-for-a-Karaoke-Event is the repository that is linked to the deployed Streamlit (Python Framework) and Firebase (API) Web Application Project, and it has the exact same files in this folder. The purpose of each file is explained in the 'README.md' file in this other repository. Names of the files are shortened compared to the files in the '(main, using Firebase as database) Streamlit (Python Framework) and Firebase ROOTech Karaoke Night project' folder to prevent any errors caused by long file names during deployment.
  • '(main, using Firebase as database) Streamlit (Python Framework) and Firebase ROOTech Karaoke Night project' - consists of the files that contains the code for the main version of the Streamlit (Python Framework) Web Application Project with the Firebase (API). (excludes the supporting files required for deployment of the Streamlit (Python Framework) and Firebase (API) Web Application Project with detailed namings of the files)
  • '(prototype, using csv file as database) Streamlit (Python Framework) ROOTech Karaoke Night project' - consists of the files that contains the prototype version of the Streamlit (Python Framework) Web Application Project, but it uses a CSV file as a 'database' rather than the Firebase (API). However, a senior eventually mentioned that this will not work as a CSV file is not dynamic, and will be unchangable/static when it is deployed, which will not work as the project needs to be dynamic, where the database needs to be able to be constantly updated during the deployment. This is where the connecting the 2 Streamlit Web Applications to an alternate database such as Firebase (API)'s Realtime Database solves the problem.

This project's deployed Streamlit (Python Framework)'s Web Applications and Firebase (API) links:

Potential Improvements:

  • Automating the process, where after the end of a song, the song queue removes the top singer in the song queue who has completed their song
  • Add a functionality where the registration Streamlit (Python Framework) Web Application tells the user, upon submitting their registration details, how many other users are in front of them in the song queue

Additional Link(s):

Source(s):

Programming Languages used:
My Skills

Frameworks used:
My Skills


Summary about the project:

  • The first Lorenz Equation graph has the initial conditions of x=0, y=1, z=0, and parameters of ∂=10, r=28, b=8/3 and represents Chaos in the Lorenz Equation solutions.
  • The second Lorenz Equation graph has the initial conditions of x=-25, y=-10, z=-13.9, and parameters of ∂=10, r=21, b=8/3 and represents Transient Chaos in the Lorenz Equation solutions.
  • The third Lorenz Equation graph has the initial conditions of x=0, y=1, z=0, and parameters of ∂=10, r=350, b=8/3 and represents no Chaos in the Lorenz Equation solutions.

From wikipedia: "Chaos theory is an interdisciplinary area of scientific study and branch of mathematics focused on underlying patterns and deterministic laws of dynamical systems that are highly sensitive to initial conditions, and were once thought to have completely random states of disorder and irregularities."

The project task is to solve the Lorenz Equation (a Chaotic system/equation) as given in the question by drawing graphs with varying initial conditions and parameters (∂, r and b) and plotting y against t for the graphs.

Not much new here, except that I had to learn how to use the 'solve_ivp' function from the 'scipy.integrate' library specifically to be able to plot the set of Ordinary Differential Equations (ODE) of the Lorenz Equation using Matplotlib in Python into a graph (link of Youtube video where I learnt how to use the 'solve_ivp' function from the 'scipy.integrate' library: https://www.youtube.com/watch?v=INBu1Pyj0Is (Physics with Neo))

Source(s):

Programming Languages used:
My Skills

Frameworks used:
nil


Arcade.Minigames.Python.Project.Introduction.Video.mp4

Summary about the project:
The project task is to create a Python programming project assignment in a group, hence the creation of this project, done by me and some of my classmates. It consists of a main menu (no GUI) and 6 minigames:

  • Tic-Tac-Toe (no GUI)
  • Hangman (no GUI)
  • Rock, Paper, Scissors (no GUI)
  • Blackjack (no GUI)
  • Light Cycle (with GUI, using the 'turtle' Python library)
  • Space Invaders (with GUI, using the 'tkinter' Python library)

The video shows a demonstration of how the 'Arcade Minigames' Python project looks like. Done by me using OBS Studio software for screen recording and VideoPad Video Editor (by NCH Software) for video editing. Music is 'Always with me' by Studio Ghibli.

Source(s):
nil

Programming Languages used:
My Skills

Frameworks used:
nil


DTI Part 1 A3 posters (individual work)


DTI Part 2 A3 posters (group work)


DTI Part 3 5 A3 posters(individual work)


DTI Part 4 1 A1 poster, promotional video and functional prototype demonstration video (group work)

DTI.Part.4.Group.Work.Idea.Promotional.video.mp4
DTI.Part.4.Group.Work.Functional.Model.Demonstration.video.mp4

Summary about the project:
The project task is to use creative installations of light to improve social experiences. The project is split into 4 parts that involve different tasks, some are a group task, some are individual tasks:

  • DTI Part 1: Identify and analyse an everyday activity and a site where this activity takes place, as well as come up with a problem statement (individual work)

    • My selected everyday activity is taking the lift, and my selected site where this activity takes place is at a lift lobby in Changi City Point (CCP) Mall (Singapore). The poster is done using Canva and the drawn images are done via image tracing of the personally-taken pictures of the site in Abode Illustrator and image editing in Photoshop.
  • DTI Part 2: Finalise and refine the analysis of the everyday activity, the site and problem statement as a group (group work)

    • As a group, we finalised the everyday activity of taking the lift, but with the selected site where this activity takes place at a lift lobby in Eastpoint Mall (Singapore). The poster is done using Canva and the drawn images are done via image tracing of the personally-taken pictures of the site in Abode Illustrator and image editing in Photoshop..
  • DTI Part 3: Brainstorm ideas and finalise a best idea individually (individual work)

    • My brainstorm ideas are as shown in the Mindmap A3 poster, with help with inspiration from ChatGPT. My finalised best idea is 'Directional FloorContours', where it attempts to tackle the problem of awkwardness (both physical and emotional) when entering a crowded lift during peak hours, by having floor light marking indications (with a floor level label) that helps to organise movement and positioning of lift users inside the lift and at the lift lobby, that optimises positioning and minimises movement during lift user entering and exiting the lift. The poster is done using Canva and the drawn images are done via image tracing of the personally-taken pictures of the site in Abode Illustrator and image editing in Photoshop.
  • DTI Part 4: Finalise and refine the best idea (out of all the individual 'best ideas'), build a functional prototype, and a scale model of the prototype being used at the site (group work)

    • As a group, we finalised on the best idea we have named: LambLens. LambLens is a visual display of the lift status using aesthetic designs of a farm-theme that is placed around the lift lobby to provide information of the lift status to people looking to take the lift. The visual display updates in realtime, where the lambs indicate where people are standing in the lift.

    • LambLens uses an array of IR sensors to track at which spaces in the lift is being occupied by a person or an object (such as a stroller/trolley), and the array of IR sensors sends the data to a microprocessor (such as Arduino), and the processed data is sent to a CPU (such as a computer), which is connected to a display screen which displays the lift status in the entertaining, aesthetic farm-theme.

    • On the functional prototype:

      • We used basswood and laser cutting (using RDWorks software) to build the functional prototype model, with 3D printed 1:15 human models and objects (using Ultimaker Cura software).
      • We took the approach of building the functional prototype model as puzzle pieces, where we did not use glue/nails, and hence can assemble and disassemble the functional prototype model easily.
      • We used Arduino, connected to an array of Arduino IR sensor modules, to detect the presence of the 3D printed human models and objects (using Ultimaker Cura software) placed in our functional (1:10) lift prototype model made using basswood and laser cutting (using RDWorks software). The data from the Arduino IR sensor modules is then sent to a computer via a USB cable connected to the computer.
      • In the computer, a webpage of the farm-themed lift status is built using Flask (a Python website building framework), HTML and CSS, that takes in the data from the Arduino IR sensors, and it refreshes periodically to update itself with the most current data from the Arduino IR sensors.
    • On the scale model (1:50):

      • We used basswood, clear acrylic, frosted acrylic and laser cutting (using RDWorks software), and 1:50 human models purchased online.
      • We took the approach of building the scale model as puzzle pieces, where we did not use glue/nails, and hence can assemble and disassemble the scale prototype model easily.
    • On the promotional video:

      • We used Blender to create the animations and 2 scenes used in the video, the Eastpoint Mall (Singapore) model and the Lift Lobby model. The Blender human animations are downloaded from Mixamo, and Blender object models are downloaded from Turbosquid and Free3D.
      • Video editing is done using iMovie
    • On the A1 poster:

      • The poster is done using Canva and the drawn images are done using Abode Illustrator and Photoshop.

Source(s):
(Too many and cannot keep track)

Programming Languages used:
My Skills My Skills My Skills

Frameworks used:
My Skills My Skills My Skills My Skills My Skills


(Symmetric Stretching vibration mode of a N2 molecule)

(Bending vibration mode of a CO2 molecule)

(Bond angle of a C atom in the cis-2-butene molecule)

(Bond length between the C=C double bond in the cis-2-butene molecule)

(Bond angle of a C atom in the trans-2-butene molecule)

(Bond length between the C=C double bond in the trans-2-butene molecule)

Summary about the project:
A short interesting assignment (not quite a project) on atom/molecule CADDing using software as part of a Quantum Chemistry module.

From wikipedia: "Quantum chemistry, also called molecular quantum mechanics, is a branch of physical chemistry focused on the application of quantum mechanics to chemical systems, particularly towards the quantum-mechanical calculation of electronic contributions to physical and chemical properties of molecules, materials, and solutions at the atomic level."

The project task is to explore and explain some molecular geometry characteristics (e.g. bond length, bond angle, different vibration modes, etc.) for different molecules using the GaussView and Avogadro softwares, and explain how does these molecular geometry characteristics affect its chemical and physical properties of the molecules.

Also learnt (surface level) to use some other very technical softwares such as WinSCP (to transfer our processed CAD molecule files to our professors), and MobaXterm (used its terminal to process the directly created CAD molecule files from GaussView ('com' files) into 2 other files, '.log' and '.chk', where the '.log' file is the executable file, which is opened in the Avogadro software to study the CAD molecule's molecular geometry).

--Workflow:--
a. GaussView - create CAD molecule file ('.com')
b. MobaXterm - process the CAD molecule file ('.com') to get '.log' and '.chk' files
c. Avogadro - to run the executable processed CAD molecule file ('.log')
d. WinSCP - upload the processed CAD molecule files here ('.com', '.log', '.chk') to share

Source(s):
nil

Programming Languages used:
nil

Frameworks used:


8. ROOT FAQ Forum using Figma and Nextjs

Summary about the project:
https://www.figma.com/file/3R7O2Tel3Sx53f5vtqH2sF/Practice-with-Figma-(by-re-creating-the-Whatsapp-UI%2C-Instagram-UI-and-others)?type=design&node-id=21-191&mode=design&t=nP8aI7L3aM7gsXgH-0 Check out my Practice with Figma website here!

https://www.figma.com/file/FKcGirm67sW9K86neDIfzP/SUTD-FAQ-Forum-(as-ROOTech)?type=design&node-id=0-1&mode=design&t=BoAsSR5G5ixDM1Cn-0 Check out the ROOT FAQ forum website here!

Source(s):

Programming Languages used:
nil

Frameworks used:
My Skills


8. ROOT SUTDiscourse automating workflow Zapier linking the Tally (form), Google sheets and Notion

Summary about the project:
During the first few months of the new students of my university, there will be a series of events be held to integrate them into University life. These events are planned by communities throughout the universities and they need to be approved by the university office by submitting an event approval form. Once approved, the details of the event (e.g. date, venue, sign-up form, hosting organisation, etc.) will updated to an online school calender that will be shared to all the new students.

For some reason (either it was lost or never made), there isn't a automated workflow of this process. Hence, here is my attempt to automate the workflow, using Zapier as the "workflow automated tools" as the software medium of the workflow automation, Tally (form) as the event approval form, Google sheets as the database to store details of the submitted event approval form and as the software medium for the university's office staff to approve events, and Notion's calender as the online school calender that will be shared to all the new students.

--Workflow:--
Tally form submission -> Updates Google sheets -> Updates Notion (which will auto update its Notion calender)

Source(s):

Programming Languages used:
nil

Frameworks used:
My Skills

About

A compilation of school projects I've done at SUTD consisting of various programming languages and frameworks.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published