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%) 
	
		
			| 
					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.0 
				 |