20804270
Computer Science 3
Course Information
Description
Computer Science 3 is the third semester for computer science majors which incorporates a semester-long project to cover topics such as: version control, time complexity, data formats, breakpoint debugging, hashing, lambdas, testing/build frameworks, GUI, self-balancing trees, graphs, and web technologies.
Total Credits
3
Course Competencies
-
Create a project mimicking real-world requirementsAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaProject is created from scratchImplement directions that don’t explicitly tell you how to code various objectivesParse structured inputConduct sophisticated processingPresent users with complex graphics including interactive formsIntegrate your code with pre-existing code to create animated graphics that asynchronously display what’s being processed
-
Use version controlAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaDistinguish types of version controlUse modern distributed technologiesDemonstrate the typical commands in the cycle of project contributions
-
Analyze time/space complexityAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaExplain why scaling with data is best for predicting runtimeIdentify the seven most common big-oh functionsIdentify these functions in algorithms used in data structures
-
Examine I/O for common data types (XML and/or JSON)Assessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaName the parts of an XML documentDistinguish DOM vs SAX parsers and use them to preserve program information in a structured format
-
Use IDEs/breakpoint debuggingAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaUsing an IDE, explain what a breakpoint is and what they doDemonstrate stepping through codeFollow where you are in the stackExecute arbitrary code at any point in an applicationDebug complex programs with these techniques
-
Implement unit testing/testing frameworksAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaUse a unit testing frameworkUse different coverages to ensure programs are working using test-driven development principles
-
Use build toolsAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaDescribe the steps of a typical build lifecycleSpecify project dependenciesAutomate jar file creation for your project
-
Explain hashing (maps/sets)Assessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaDemonstrate hashing and rehashing of a mapDetermine the time complexities of its operations given either open addressing or chaining techniquesExplain why objects that are equal must have the same hashcode and what makes a good hashcodeDifferentiate use of a HashMap vs. a TreeMap
-
Design inner classes/lambdasAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaIdentify the four types of inner classes and how they affect scopeExplain the relationship between anonymous classes, functional interfaces, and lambdasCreate custom functions which accept lambdas
-
Design graphical user interfacesAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaCreate graphical forms using JavaFX by hand using plain Java code and using tools with FXMLExplain what an EventListener is and how it’s usedDescribe what an MVC application entails
-
Examine treesAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaExamine properties of trees and how BSTs workRotate nodes of binary treesDemonstrate in detail how AVL, Red/Black, 2-3, and B-Trees maintain balance and how this affects time complexity of their operations
-
Examine graphsAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaExplain the properties of various graph typesDescribe the two types of adjacency lists and compare the time complexities of their operationsDemonstrate traversals of unweighted graphs and use Djikstra’s and Prim’s algorithms to traverse weighted graphs
-
Examine comparison and linear sortsAssessment StrategiesSkill demonstration, self-assessment, and/or examCriteriaReview insertion sort, mergesort, and quicksort and their time-complexitiesExplain what timsort is and how it improves on mergesortApply counting sort and radix sort analyzing when they’re appropriate to use and how they accomplish linear time complexity