CodePath
    • Options
    • Versions
    • Transfer ownership
    • Delete this note
    • Template
    • Save as template
    • Insert from template
    • Export
    • Dropbox
    • Google Drive
    • Import
    • Dropbox
    • Google Drive
    • Gist
    • Clipboard
    • Download
    • Markdown
    • HTML
    • Raw HTML
    • ODF (Beta)
    • PDF (Beta)
    • Sharing Link copied
    • /edit
    • View mode
      • Edit mode
      • View mode
      • Book mode
      • Slide mode
      Edit mode View mode Book mode Slide mode
    • Note Permission
    • Read
      • Owners
      • Signed-in users
      • Everyone
      Owners Signed-in users Everyone
    • Write
      • Owners
      • Signed-in users
      • Everyone
      Owners Signed-in users Everyone
    • More (Invitee)
    • Publishing
      Everyone on the web can find and read all notes of this public team.
      After the note is published, everyone on the web can find and read this note.
      See all published notes on profile page.
    • Invitee
    • No invitee
Menu Sharing Help
Menu
Options
Versions Transfer ownership Delete this note
Export
Dropbox Google Drive
Import
Dropbox Google Drive Gist Clipboard
Download
Markdown HTML Raw HTML ODF (Beta) PDF (Beta)
Back
Sharing
Sharing Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
More (Invitee)
Publishing
Everyone on the web can find and read all notes of this public team.
After the note is published, everyone on the web can find and read this note.
See all published notes on profile page.
More (Invitee)
Invitee
No invitee
   owned this note    owned this note      
Published Linked with
Like BookmarkBookmarked
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
# Software Fundamentals Series - Programs - CodePath.org ## 1. Overview This is a three-part series that builds a fundamental approach to designing, implementing, and analyzing complex algorithms. The course also incorporates key skills including technical communication and collaboration while problem solving. The course is designed to provide students with the techniques and confidence required to solve especially challenging technical problems. A key part of the course series is frequent, quantative assessment that demonstrates progress and helps students calibrate and focus their efforts. - **Audience:** Undergraduate CS students across all 4 years - **Goal:** Develop strong confidence and readiness in the fundamentals of solving technical problems including analysis, debugging, verification and technical communication - **Outcomes:** Student is confident and ready to succeed in technical interviewing and engaging in complex problem solving Section 2 below covers the audience, goal, and outcome of each 12-week course. Section 3 reviews the schedule of topics and the progression of difficulty within a topic. Section 4 reviews the learning goals that span topics. Finally, section 5 reviews the assessment framework that we use to benchmark student progress across multiple dimensions. ## 2. Course Series The course series is designed for freshmen through seniors, although students test into the appropriate level. For example, it might be appropriate for a sophomore to take the advanced class and a junior to take the intermediate class. ### 2.1. Structure Each of the 3 courses in the series is structured as follows: * Semester-long course with two sessions each week * Instructor-led in-class activities focused on specific elements of problem solving * Small group activities where students solve problems together and discuss solutions * At-home warmup exercises which prepare students for the sessions * Weekly coding tests designed to evaluate students across six key aspects of mastery * Detailed expert walkthrough videos to model a robust framework for problem solving * Technical guides documenting specific algorithmic patterns and techniques ### 2.2. Series Breakdown The audience, goals, and outcomes for our software fundamentals series are outlined below: 1. **SE101: Introduction to Software Fundamentals** * Audience: Freshman/Sophomore CS & STEM w/ basic programming experience * Goal: Practical techniques for designing and implementing basic algorithms (UMPIRE) * Outcome: **Clear understanding of technical interviewing, follow-through to SE102** 2. **SE102: Intermediate Software Fundamentals** * Audience: Sophomore/Junior CS w/ data structures and algorithms experience * Goal: Improve student proficiency and confidence in algorithmic techniques and analysis * Outcome: **Pass technical phone screens at companies, and pass technical on-sites in easier-to-medium interview cycles** 3. **SE103: Advanced Software Fundamentals** * Audience: Junior/Senior CS w/ data structures and algorithms experience * Goal: Empower students with the confidence and knowledge to excel at top tech companies * Outcome: **Pass technical on-sites in medium-to-hard interview cycles** ### 2.3. Pedagogy In these courses, students are introduced to the following: * The [UMPIRE method](https://guides.codepath.com/compsci/UMPIRE-Interview-Strategy) which is a comprehensive framework for solving technical problems every step of the way from designing the algorithm, to checking the test cases. * A framework for complexity analysis that allows students to make trade-offs between time and space * A structured approach to "talking out loud while they solve problems" which is a crucial component to successful interviewing by practicing a high number of problems with other students and mentors over 12-weeks * Deep explorations of fundamentals and techniques encountered in technical interviews or while developing algorithms. Check [this guide for a sample of topics](https://guides.codepath.com/compsci). Check out our [passing the technical interview](https://tinyurl.com/codepathinterviewguide) guide for a high-level of the things covered across our rigorous three-part series including behavioral tips, and technical topics. ## 3. Topics Spanning our three-part software fundamentals series, the following topics will be reviewed across three levels of difficulty: | Topic | SE101 | SE102 | SE103 | | ----- | ------ | ------ | ----- | | Loops | :white_circle: | | | | Conditionals | :white_circle: | | | | Hashtables | :white_circle: | :large_blue_circle: | :red_circle: | | Strings | :white_circle: | :large_blue_circle: | :red_circle: | | Arrays | :white_circle: | :large_blue_circle: | :red_circle: | | Linked Lists | | :white_circle: :large_blue_circle: | :red_circle: | | Stacks and Queues | | :white_circle: | :large_blue_circle: | | Trees and Binary Trees | | :white_circle: :large_blue_circle: | :red_circle: | | Graphs | | :white_circle: | :large_blue_circle: | | Greedy Algorithms | | | :white_circle: :large_blue_circle: | | Dynamic Programming | | | :white_circle: :large_blue_circle: | | Backtracking | | | :white_circle: :large_blue_circle: | :::info **Legend:** :white_circle: Easy :large_blue_circle: Medium :red_circle: Hard ::: ## 4. Learning Goals Spanning our three-part software fundamentals series, students should develop increasing proficiency and confidence across the following learning goals: 1. Comprehend problem and develop a set of test cases with expected outputs. 1. Select appropriate abstract data types and algorithms for use in a given application. 1. Design and implement required operations including traversal, insertion, deletion, search, and sort. 1. Decompose proposed solution through use of visualization and pseudocode. 1. Trace through and predict the behavior of code designed to implement required operations. 1. Identify and remedy flaws in an implementation that may cause its behavior to differ from the intended design. 1. Analyze runtime efficiency and space complexity of algorithms. The learning goals above are adapted from: [Developing Course-Level Learning Goals for Basic Data Structures in CS2](https://www.cs.oberlin.edu/~ctaylor/pubs/p858-porter.pdf). ## 5. Assessment Framework The assessment framework enables us to accurately evaluate student skill levels and personalize their growth plans. Each course involves weekly assessments and scores across each area below: * **Algorithms** - Deciding and defining algorithms * **Design** - Object-oriented and system design * **Coding** - Implementing algorithms into running code * **Analysis** - Time/space complexity analysis, trade-off analysis * **Verification/Debugging** - Diagnosing edge cases, and tracing test cases * **Technical Communication** - Writing and speaking about code and projects We work with students to reinforce, develop and measure all six areas throughout our software fundamentals series.

Import from clipboard

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lost their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.
All
  • All
  • Team
No template.

Create a template

Delete template

Do you really want to delete this template?

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Forgot password

or

Sign in via SAML

Help

Documents

Tutorials
YAML Metadata
Slide Example
Book Example

Cheatsheet

Example Syntax
Header # Header
  • Unordered List
- Unordered List
  1. Ordered List
1. Ordered List
  • Todo List
- [ ] Todo List
Blockquote
> Blockquote
Bold font **Bold font**
Italics font *Italics font*
Strikethrough ~~Strikethrough~~
19th 19^th^
H2O H~2~O
Inserted text ++Inserted text++
Marked text ==Marked text==
Link [link text](https:// "title")
Image ![image alt](https:// "title")
Code `Code`
var i = 0;
```javascript
var i = 0;
```
:smile: :smile:
Externals {%youtube youtube_id %}
LaTeX $L^aT_eX$

This is a alert area.

:::info
This is a alert area.
:::

Versions

Versions

Version named by    

More Less
  • Edit
  • Delete

Note content is identical to the latest version.
Compare with
    Choose a version
    No search result
    Version not found

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.