-
Notifications
You must be signed in to change notification settings - Fork 7
Home
Mike Lam edited this page Apr 17, 2018
·
34 revisions
Welcome to the less-java wiki! This page was used to track progress during the 2017-2018 academic year while the primary author completed his honors thesis work. It is no longer maintained. Please see the official repo and the issue list for current information.
DONE:
- writing
- first draft (3/13)
- draft to committee (3/20)
- comments from committee (3/27)
- final draft (4/3) (formatting guidelines)
- due (4/10)
- feature: OOP
- short example code (1/23)
- correct parsing (2/13)
- re-read EAC on objects (3/13)
- class definitions, member attributes, and instances (3/13)
- member methods and constructors (3/13)
- "this" references and inheritance (3/13)
- feature: list '[]' (ArrayList) (1/30)
- list :
() -> 'a list - add/push/enqueue :
'a list -> 'a -> () - remove :
'a list -> 'a -> 'a - pop/dequeue :
'a list -> 'a - insert :
'a list -> int -> 'a -> () - removeAt:
'a list -> int -> () - get :
'a list -> int -> 'a - set :
'a list -> int -> 'a -> () - size :
'a list -> int
- list :
- feature: set '{}' (HashSet): add/remove/contains, (union/intersection/difference?), size (1/30)
- set :
() -> 'a set
- set :
- feature: map '<>' (HashMap): put/get/remove, getKeys/containsKey, size (1/30)
- map :
() -> ('a,'b) map - getKeys :
('a,'b) map -> 'a set
- map :
- fix negative numbers/unary operators (unop.lj example) (1/30)
- writing
- create Overleaf document and add Lam (1/23)
- write outline (1/30)
- major language feature: no procedural code at global scope (1/23)
- add 'global' variables initialized to constants
- fix variable scoping issue
- fix: floating point equality should be exact (1/23)
- major language feature: no procedural code at global scope
- enforce existence of main (1/16)
- feature: native data types (1/9)
- int (Integer)
- bool (Boolean)
- real (Double)
- string (String)
- design: collections (12/12)
- ready for competitive programming session (12/8)
- quick-and-easy deployment
- problems
- hello world
- find largest number
- oddgnome
- 3n+1
- fix function-local variable declarations (12/5)
- major feature: debug type inference
- fix non-halting problem (11/28)
- instantiate universal types at function calls (11/28)
- feature: scanner-based input (11/28)
- refactoring:
Program -> ( Func | Stmt | Test ) *(10/24) - major feature: unit tests (10/17)
- test harness for compiled program output (10/17)
- feature: vim highlighting! (10/10)
- major feature: universal type inference (10/10)
- parser: let function names contain digits (9/26)
- parser: add comments (9/26)
- add type annotations to all
type-inference.ljfunctions (9/26)
- add type annotations to all
- parser: fix operator precedence (9/19)
- codegen: print to stdout (9/19)
OFFICIAL FUTURE WORK:
- major feature: OOP
- passing objects as parameters (fix type inference issues) #18
- all: testsuite (3/27)
- documentation for future students #20
- future work: reimplement Decaf static analysis #11
- duplicate symbols
- return/break locations
- expression types
- function parameters
- report line numbers
- type unification failures
- future work: runtime exception handler #21
- future work: add inferred type output flag #22
- future work: easy installation and one-command build system #23