CSCD320 — Algorithms
Data structures and algorithms with emphasis on dynamic programming and non-linear structures such as trees and graphs.
Learning Objectives & Matches
Design, implement, and analyze algorithms using dynamic programming techniques
Analyze information processing or computation needs and plan and design computer systems, using techniques such as structured analysis, data modeling, and information engineering.
Analyze user needs and software requirements to determine feasibility of design within time and cost constraints.
Analyze problems to develop solutions involving computer hardware and software.
Develop or implement data analysis algorithms.
Direct the analysis, development, and operation of complete computer systems.
Monitor program performance to ensure efficient and problem-free operations.
Develop computational methods for solving problems that occur in areas of science and engineering or that come from applications in business or industry.
Conduct logical analyses of business, scientific, engineering, and other technical problems, formulating mathematical models of problems for solution by computers.
Design, develop and modify software systems, using scientific analysis and mathematical models to predict and measure outcomes and consequences of design.
Break systems into their components, assign numerical values to each component, and examine the mathematical relationships between them.
Implement graph algorithms including shortest path, minimum spanning tree, and traversal algorithms
Develop and implement solutions for network problems.
Develop computational methods for solving problems that occur in areas of science and engineering or that come from applications in business or industry.
Conduct logical analyses of business, scientific, engineering, and other technical problems, formulating mathematical models of problems for solution by computers.
Develop or implement data analysis algorithms.
Create graphs, charts, or other visualizations to convey the results of data analysis using specialized software.
Analyze problems to develop solutions involving computer hardware and software.
Formulate mathematical or simulation models of problems, relating constants and variables, restrictions, alternatives, conflicting objectives, and their numerical parameters.
Apply mathematical theories and techniques to the solution of practical problems in business, engineering, the sciences, or other fields.
Mentor others on mathematical techniques.
Break systems into their components, assign numerical values to each component, and examine the mathematical relationships between them.
Apply greedy algorithms and optimization strategies to solve computational problems
Evaluate algorithm efficiency, correctness, and optimization opportunities
Recommend and implement performance improvements.
Monitor program performance to ensure efficient and problem-free operations.
Analyze, interpret, or disseminate system performance data.
Develop Web site performance metrics.
Estimate costs for system or component implementation and operation.
Test and evaluate hardware and software to determine efficiency, reliability, or compatibility with existing systems.
Evaluate network designs to determine whether customer requirements are met efficiently and effectively.
Evaluate processes and technologies, and suggest revisions to increase productivity and efficiency.
Evaluate the statistical methods and procedures used to obtain data to ensure validity, applicability, efficiency, and accuracy.
Develop or implement data analysis algorithms.
Implement divide-and-conquer algorithms for efficient problem solving