Java Python COMP2140 Web/Mobile Programming
A1 - Functional Javascript. Programming Assessment Item (Overall Weighting 30%)
Attention to Detail (30%)
No Marks | Half Marks | Full Marks | |||
The submission to Gradescope does not include a project folder containing JavaScript. file(s), missing both the static data files and cached real-time data. | 0.0 | The submission to Gradescope includes a project folder containing JavaScript. file(s), but is missing either the static data files or cached real-time data. | 2.0 | The submission to Gradescope includes a project folder containing JavaScript. file(s), the static data files and cached real-time data. | 4.0 |
The project folder does not feature an appropriate file/folder naming/structure, and the starting file is difficult to locate. | 0.0 | The project folder features a mostly appropriate file/folder naming/structure. | 2.0 | The project folder features the specified file/folder naming/structure, with a starting file that is easy to locate. | 4.0 |
The app does not run via Node.js in the terminal, requiring significant modifications to get it running. | 0.0 | The app does not run via Node.js in the terminal, but only requires minor modifications to get it running. | 2.5 | The app runs via Node.js in the terminal, without any issues. | 5.0 |
The user-facing portion of the app demonstrates little to none of the expected functionality. | 0.0 | The user-facing portion of the app demonstrates half of the expected functionality. | 6.0 | The user-facing portion of the app demonstrates all of the expected functionality. | 12.0 |
No Planning Document is provided. | 0.0 | The Planning Document details some of the expected data joins. | 2.5 | The Planning Document details all expected data joins. | 5.0 |
Functional Programming (40%)
No Marks | Half Marks | Full Marks | |||
Does not demonstrate an understanding of functional programming techniques, relying too heavily on imperative logic with side effects. | 0.0 | Demonstrates some understanding of functional programming techniques, with occasional reliance on imperative with some management of side effects. | 2.5 | Demonstrates a strong understanding of functional programming techniques, balancing the use of declarative & imperative logic where appropriate and managing side effects. | 5.0 |
Does not demonstrate an understanding of declaring, defining & transforming immutable data, relying too heavily on redefining values. | 0.0 | Demonstrates some understanding of declaring, defining & transforming immutable data, with occasional reliance on redefining values. | 2.5 | Demonstrates a strong understanding of declaring, defining & transforming immutable data. | 5.0 |
Does not demonstrate an understanding of recursive techniques, relying too heavily on iterative logic over recursive logic. | 0.0 | Demonstrates some understanding of recursive techniques, with occasional reliance on iterative over recursive logic. | 2.5 | Demonstrates a strong understanding of recursive techniques, balancing the use of recursive & iterative logic where appropriate. | 5.0 |
Does not demonstrate an understanding of modularity through nested functions, composition and function chaining where variable scoping is too broad. | 0.0 | Demonstrates some understanding of modularity through nested functions, composition and function chaining, and variable scoping could be narrowed. | 5.0 | Demonstrates a strong understanding of modularity through nested functions, composition and function chaining including appropriate variable scoping. | 10.0 |
Does not demonstrates any ability to develop a modular dataframe. library or includes no required functionality. | 0.0 | Demonstrates some ability to develop a modular dataframe. library with partial functionality to load CSV files, join, select columns, find distinct column values and filter. | 2.5 | Demonstrates strong ability to develop a modular dataframe. library with full functionality to load CSV files, join, select columns, find distinct column values and filter. | 15.0 |
Asynchronous Programming and Integrations (15%)
COMP2140 Web/Mobile Programming A1Java
No Marks | Half Marks | Full Marks | |||
Does not use Node.js modules to support prompting, Fetch API, CSV parsing, and file system access. | 0.0 | Uses Node.js modules to support prompting, Fetch API, CSV parsing, and file system access, but could be better integrated into the code. | 1.0 | Integrates Node.js modules, or demonstrates suitable bespoke alternatives, to support prompting, Fetch API, CSV parsing, and file system access. | 2.0 |
Demonstrates little to no use of asynchronous programming techniques, or does not use Promises and appropriate syntax (e.g. async/await) to action them. | 0.0 | Demonstrates an occasional use of asynchronous programming techniques, using Promises, and appropriate syntax (e.g. async/await) to action them. | 1.5 | Demonstrates a holistic approach to asynchronous programming, using Promises, and appropriate syntax (e.g. async/await) to action them. | 3.0 |
Does not integrate live data derived from the web API proxy (using the Fetch API) and local data via CSV files. | 0.0 | Integrates live data derived from the web API proxy (using the Fetch API) and local data via CSV files, but it could be more selectively filtered. | 5 | Integrates live data derived from the web API proxy (using the Fetch API) and local data via CSV files, with selective filtering applied. | 10.0 |
Code Quality and Testing (15%)
No Marks | Half Marks | Full Marks | |||
Demonstrates little to no consideration of an easy to understand program structure, with variables & functions not following a consistent naming scheme. | 0.0 | Demonstrates some consideration of an easy to understand program structure, with variables & functions following a consistent naming scheme. | 1.0 | Demonstrates consideration of an easy to understand program structure, with variables & functions following a consistent naming scheme. | 2.0 |
Demonstrates little to no consideration of code neatness (e.g. tabbing, whitespace) or consistency (similar to common style. guides). | 0.0 | Demonstrates some consideration of code neatness (e.g. tabbing, whitespace) and consistency (similar to common style. guides). | 1.0 | Demonstrates consideration of code neatness (e.g. tabbing, whitespace) and consistency (similar to common style. guides). | 2.0 |
Demonstrates little to no understanding of the code through comments, with comments above function declarations excluding @param and @returns. | 0.0 | Demonstrates some understanding of the code through comments, with comments above function declarations including @param and @returns. | 1.0 | Demonstrates understanding of the code through comments, with comments above function declarations including @param and @returns. | 2.0 |
Demonstrates little to no use of shorthand syntax (e.g. arrow function expressions) where appropriate. | 0.0 | Demonstrates some use of shorthand syntax (e.g. arrow function expressions) where appropriate. | 1.0 | Demonstrates regular use of shorthand syntax (e.g. arrow function expressions) where appropriate. | 2.0 |
Demonstrates little to no understanding of creating test cases in Jest. | 0.0 | Demonstrates some ability to write tests but not all test cases are covered using Jest. | 3.5 | Demonstrates strong ability to write comprehensive test cases using Jest. | 7 |