https://github.com/lukeprior/comp1511-guide
The Ultimate COMP1511 Guide!
https://github.com/lukeprior/comp1511-guide
Last synced: 4 months ago
JSON representation
The Ultimate COMP1511 Guide!
- Host: GitHub
- URL: https://github.com/lukeprior/comp1511-guide
- Owner: LukePrior
- Created: 2022-04-06T00:13:24.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-04-09T13:11:35.000Z (about 4 years ago)
- Last Synced: 2025-02-05T19:38:19.537Z (over 1 year ago)
- Homepage: https://comp1511-guide.vercel.app/
- Size: 15.1 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ultimate COMP1511 Guide
I had been interested in experimenting with WebAssembly for some time so I decided to take this oppurtunity to create a proof of concept for a fully self-contained COMP1511 website that can be run offline as a PWA with full C compilation support. We normally write our C code and compile it using dcc or gcc into machine code that our computer can run.
The web browser cannot run this compiled machine code so a different approach needs to be taken. The underlying tool used by dcc and gcc is the clang compiler which itself is written in C++. There exists a port of clang which has been compiled from C++ to WebAssembly which allows the tool to be run in the browser. This allows us to write, compile, and run C code entirely within our browser without the need for any external servers or programs.
I decided to create a simple website which implements this approach by the week 2 problem sets questions and answers. The website contains the description for each problem along with any hints, examples, and assumptions in expandable modals. There is a dedicated code-editor for each pre-loaded with the neccessaty boilerplate code which you can edit and run. I have also added the ability to import the sample solution along with being able to save the code as a C file to your device and import any file.
I originally had grander ambitions for the site but unfortunately some features had to be scaled back, I originally investigated running cs1511 style in the browser but as the style script is written in Python with certain clang tools as a dependency I could not create a functional WebAssembly version. I made more significant process in using the Artistic Style code formatter which had already been ported to WebAssembly however it was designed as a server side packagae so I have been working with the developer to create a client side version.
I also planned to integrate the tests into the browser as this is a supported feature of the Runno wrapper which I'm using for code compilation and running however a bug exists in the program for testing C code so I have been in touch with the developer to find a fix. The site is a Progressive Web Application and can be installed as an app on a phone or PC which allows it to download and locally store all the required files to compile and run the C code which allows the page to work while offline.
The page could easily be expanded to include more content and examples if anybody is interested.