Giter Club home page Giter Club logo

intertect's Introduction

Intertect

An interactive learning tool for computer architecture

intertect's People

Contributors

yashpatel5400 avatar pdelong avatar

Watchers

 avatar James Cloos avatar  avatar  avatar Lucy Lin avatar

intertect's Issues

Compile the program file animation

Code doesn't actually have to be doing anything, should just look as if it were being compiled on a desktop. Note that you should verify this with the actual output of compiling said program on desktop

Compiler

We need something that can compile the assembly language into machine code. This shouldn't be too horrendously difficult but it might take a week or more to implement.

Implement add instruction

This is still up for debate (whether we even want to do this or just make the students implement it), but we may want to show students how, when the add instruction is implemented, the registers and memory are used. This will give them some footing for how other instructions they'll be implementing will work

Allow student to modify assembly code

This would allow the student to learn the assembly syntax and play around to see how things really work. This would require a way to verify the syntax so it might take a a significant amount of work, but this would be great to have

Determine program flow

We need to figure out how we are going to run through the assembly program. For example, we need to understand how to handle jumps.

I propose that we actually compile the program and then feed the user the location to jump to, just having the student set the program counter.

Set up static site generator

Since the site is going to be static, we can use a static site generator to get the benefits of templating. This should make updating the site significantly less painless

Updates memory/registers according to JS code

This is a large task -- probably requires further subdivision. But basically, take the JS code that students write and execute the associated assembly instructions, updating memory/registers as per the JS code

Hot reload JS

Need to figure out how hot reloading works. Shouldn't be hard, since this is a solved problem, but we'll need to have it implemented.

Set up Grunt (linters/minification/copyright)

Grunt is really good for automating garbage no one wants to worry about but that has to be done (i.e. "minification, compilation, unit testing, linting" according to https://gruntjs.com/). Setting this up now will help tremendously save time for local testing later on.

Choose a linter for both JS and HTML (remember, we'll be sticking with this for all of development, so make sure it's something that's well maintained/used). I know there's something called ESLint, which is widely used for JS linting, not sure about HTML.

This may also cover #7, if we're able to automate copyright placement with Grunt (which seems like a totally reasonable thing to expect). I'll paste the exact copyright text below once I've got it written
JS:

/**
* Copyright (c) 2018-present, Yash Patel and Peter DeLong
* All rights reserved.
*/

HTML:

© 2018-present Yash Patel and Peter DeLong. All rights reserved.

Describe directory structure in README

Structure looks sound; add in description on the README so it's clear both for if we forget and when the project structure inevitably becomes more complicated. Also useful if other people join later on

Open output assembly file

Show the results of compiling. These will be per whatever we have in the powerpoint slides (whatever is needed by the back-end system)

image

Bitwise arithmetic

We need to figure out the best way to allow the student to perform bitwise arithmetic. Shifts and things should be straightforward, but I'm not sure how we should handle signed vs unsigned integer arithmetic.

Set up Travis CI staging

We currently have the following workflow:

Local -> Push to master -> Travis runs tests -> (If passed) Gets pushed to Heroku servers

We may want to consider doing this:

Local -> Master -> PR submitted to prod -> Runs tests and shows results -> Can pull to prod -> Gets pushed to Heroku

Deployment to Heroku server(s)

Deployment will be done via Heroku. While it may be constraining in certain ways, the flexibility services like DigitalOcean or AWS offer also result in more time being taken out for us developers having to manage them. While these sysadmin things can sometimes be interesting, they're not ultimately what we're interested in -- let's leave those for other people to deal with.

Heroku is plenty for what we're aiming to do, which will have minimal server-side work, mostly just serving up some static web pages initially, with potential user settings served later down.

Create test assembly file

We need something that will be implemented in phase 1 (or all the phases for that matter). This can be whatever assembly files you used for testing from COS 375, unless they said not to distribute materials from that class.

Set up Travis CI integration

Testing will be critical later down (will probably seem like an unnecessary pain initially), so we should get used to it, especially for when we're deploying live.

Also, to give orientation, Travis CI is used for integration testing, while Grunt is primarily used for local unit tests and such. CI probably has little use now, but it'll be good to get used to for later on.

Set up copyright

This code will not be freely distributed (will be licensed later), so we'll need to maintain copyright on all the source files. Create a template of the copyright agreement to be put in the files and set up linters to automatically note when such copyrights are not present

Warn students on JS failure

If the JS code itself has some error (not logical, i.e. the JS code has incorrect syntax), make sure this is handled and doesn't cause the system to bug out or look unresponsive.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.