Skip to main content
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
  1. Create a project mimicking real-world requirements
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Project is created from scratch
    Implement directions that don’t explicitly tell you how to code various objectives
    Parse structured input
    Conduct sophisticated processing
    Present users with complex graphics including interactive forms
    Integrate your code with pre-existing code to create animated graphics that asynchronously display what’s being processed

  2. Use version control
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Distinguish types of version control
    Use modern distributed technologies
    Demonstrate the typical commands in the cycle of project contributions

  3. Analyze time/space complexity
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Explain why scaling with data is best for predicting runtime
    Identify the seven most common big-oh functions
    Identify these functions in algorithms used in data structures

  4. Examine I/O for common data types (XML and/or JSON)
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Name the parts of an XML document
    Distinguish DOM vs SAX parsers and use them to preserve program information in a structured format

  5. Use IDEs/breakpoint debugging
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Using an IDE, explain what a breakpoint is and what they do
    Demonstrate stepping through code
    Follow where you are in the stack
    Execute arbitrary code at any point in an application
    Debug complex programs with these techniques

  6. Implement unit testing/testing frameworks
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Use a unit testing framework
    Use different coverages to ensure programs are working using test-driven development principles

  7. Use build tools
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Describe the steps of a typical build lifecycle
    Specify project dependencies
    Automate jar file creation for your project

  8. Explain hashing (maps/sets)
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Demonstrate hashing and rehashing of a map
    Determine the time complexities of its operations given either open addressing or chaining techniques
    Explain why objects that are equal must have the same hashcode and what makes a good hashcode
    Differentiate use of a HashMap vs. a TreeMap

  9. Design inner classes/lambdas
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Identify the four types of inner classes and how they affect scope
    Explain the relationship between anonymous classes, functional interfaces, and lambdas
    Create custom functions which accept lambdas

  10. Design graphical user interfaces
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Create graphical forms using JavaFX by hand using plain Java code and using tools with FXML
    Explain what an EventListener is and how it’s used
    Describe what an MVC application entails

  11. Examine trees
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Examine properties of trees and how BSTs work
    Rotate nodes of binary trees
    Demonstrate in detail how AVL, Red/Black, 2-3, and B-Trees maintain balance and how this affects time complexity of their operations

  12. Examine graphs
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Explain the properties of various graph types
    Describe the two types of adjacency lists and compare the time complexities of their operations
    Demonstrate traversals of unweighted graphs and use Djikstra’s and Prim’s algorithms to traverse weighted graphs

  13. Examine comparison and linear sorts
    Assessment Strategies
    Skill demonstration, self-assessment, and/or exam
    Criteria
    Review insertion sort, mergesort, and quicksort and their time-complexities
    Explain what timsort is and how it improves on mergesort
    Apply counting sort and radix sort analyzing when they’re appropriate to use and how they accomplish linear time complexity