All Projects → mikeizbicki → cmc-csci046

mikeizbicki / cmc-csci046

Licence: other
CMC's Data Structures and Algorithms Course Materials

Programming Languages

TeX
3793 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to cmc-csci046

Ustc Course
❤️中国科学技术大学课程资源
Stars: ✭ 11,274 (+36267.74%)
Mutual labels:  computer-science, course
ML-University
Machine Learning Open Source University
Stars: ✭ 423 (+1264.52%)
Mutual labels:  computer-science, course
Dslsofmath
Domain Specific Languages of Mathematics
Stars: ✭ 159 (+412.9%)
Mutual labels:  computer-science, course
Rekcarc Tsc Uht
清华大学计算机系课程攻略 Guidance for courses in Department of Computer Science and Technology, Tsinghua University
Stars: ✭ 20,401 (+65709.68%)
Mutual labels:  computer-science, course
Sicp Course
SICP Course
Stars: ✭ 179 (+477.42%)
Mutual labels:  computer-science, course
Grafatko
An app for creating and visualizing graphs and graph-related algorithms.
Stars: ✭ 22 (-29.03%)
Mutual labels:  computer-science
tenacity
A computational thinking game to introduce functions, loops, conditions, and variables
Stars: ✭ 23 (-25.81%)
Mutual labels:  computer-science
scipy-crash-course
Material for a 24 hours course on Scientific Python
Stars: ✭ 98 (+216.13%)
Mutual labels:  course
reading-material
Reading schedule and our library of pdfs
Stars: ✭ 19 (-38.71%)
Mutual labels:  computer-science
js-course-2018
Репозиторій з курсів «Front-end» та «NodeJS» проекту Masters Academy
Stars: ✭ 12 (-61.29%)
Mutual labels:  course
CS
Computer Science Notes
Stars: ✭ 33 (+6.45%)
Mutual labels:  computer-science
awesome-readings
List of Awesome Research Articles on Computer Science and Technology
Stars: ✭ 25 (-19.35%)
Mutual labels:  computer-science
Codex
A free note-taking software for programmers and Computer Science students
Stars: ✭ 242 (+680.65%)
Mutual labels:  computer-science
HyperGraphLib
C++ Hypergraph modelling Library using Boost and OpenMP with some algorithms, including isomorphism using Gecode.
Stars: ✭ 19 (-38.71%)
Mutual labels:  computer-science
skillbox
Выполненные и принятые домашние задания, а также другие материалы, которые могут помочь в обучении
Stars: ✭ 32 (+3.23%)
Mutual labels:  course
js-data-structures
🌿 Data structures for JavaScript
Stars: ✭ 56 (+80.65%)
Mutual labels:  computer-science
complete-gRPC
In this course, we are going to learn about gRPC and how to use it with protocol buffer
Stars: ✭ 53 (+70.97%)
Mutual labels:  course
fullsiteediting
fullsiteediting.com/
Stars: ✭ 187 (+503.23%)
Mutual labels:  course
NTU-Computer-Security
台大 計算機安全 - Pwn 簡報、影片、作業題目與解法 - Computer Security Fall 2019 @ CSIE NTU Taiwan
Stars: ✭ 293 (+845.16%)
Mutual labels:  course
AlgorithmsAndDataStructure
Algorithms And DataStructure Implemented In Python, Java & CPP, Give a Star 🌟If it helps you
Stars: ✭ 724 (+2235.48%)
Mutual labels:  computer-science

CSCI046: Data Structures and Algorithms

About the Instructor

Name Mike Izbicki (call me Mike)
Email [email protected]
Office Adams 216
Office Hours TBA
Zoom See Issue #325
Webpage izbicki.me
Research Machine Learning (see izbicki.me/research.html for some past projects)

Fun facts:

  1. grew up in San Clemente (~1hr south of Claremont, on the beach)
  2. 7 years in the navy
    1. nuclear submarine officer, personally converted >10g of uranium into pure energy
    2. worked at National Security Agency (NSA)
    3. left Navy as a conscientious objector
  3. phd/postdoc at UC Riverside
  4. taught in DPRK (i.e. North Korea)
  5. my wife is pregnant and due to have a baby April 18th

About the Course

Data structures is the most important course in computer science, and many of the "classic" CS interview questions come from this course. Mastering this material is the first step towards getting a high paying CS job. See:

  1. https://www.levels.fyi
  2. tech employers illegally collude to reduce salaries

Who should take this course?

  1. This is a second semester course in computer science designed for students who have previously taken either CS40 (CMC), CS5 (Mudd), or CS51 (Pomona).

  2. You cannot take this course if:

    1. you have already taken a data structures course (e.g. Pomona: CS62; HMC: CS60, CS70), or
    2. you are a CS major through Mudd or Pomona.
  3. This course is required for CMC's data science major and the computer science sequence. It is optional for the data science sequence.

Learning Objectives:

Primary objectives:

  1. Learn basic devops and how open source software is developed
  2. Be able to answer the following three questions about an algorithm:
    1. Is it correct?
    2. How much resources does it consume? (time, memory, money, etc.)
    3. Can we do better?

Secondary objectives:

  1. Learn basic shell programming
  2. More experience with python programming
  3. Solve the questions asked in programming interviews and contests
  4. Introduction to the mathematics of programming (overlap with discrete math)
  5. Introduction to the hacker culture

Differences between this course and HMC's CSCI060HM/CSCI070HM:

  1. This course does not cover low-level memory management (C/C++ programming languages)
  2. This course is more practical

This course is NOT an algorithms course. Algorithms courses form the "other half" of classic CS interview questions, and you should consider taking CS148 - Graph Algorithms after this course.

Textbook:

All of our textbooks are both free as in beer and free as in speech:

  1. Problem Solving with Algorithms and Data Structures using Python by Brad Miller and David Ranum

  2. Official Python Documentation

Grades:

Your grade will be composed of:

  1. Weekly labs (worth 2**1 points)
  2. Weekly quizzes (worth 2**2 or 2**3 points)
  3. Weekly projects (worth 2**4 or 2**5 points)
  4. No midterm/final exam.
    1. Non-seniors will complete a final project due during finals week.
  5. Occassional extra credit assignments

Historically, the average student needs to spend about 10 hours per week (including class time) to get an A. About 25% of students will either: spend 15-20 hours per week and get an A, or spend 10 hours per week and get a B/C.

Late Work Policy:

You lose 2**i points on every assignment, where i is the number of days late. It is usually better to submit a correct assignment late than an incorrect one on time.

Grade Schedule:

Your final grade will be computed according to the following table, with one caveat.

If your grade satisfies then you earn
95 ≤ grade A
90 ≤ grade < 95 A-
87 ≤ grade < 90 B+
83 ≤ grade < 87 B
80 ≤ grade < 83 B-
77 ≤ grade < 80 C+
73 ≤ grade < 77 C
70 ≤ grade < 73 C-
67 ≤ grade < 70 D+
63 ≤ grade < 67 D
60 ≤ grade < 63 D-
60 > grade F

Caveats::

There are 2 "caveat tasks" in this course. These tasks should be easy, and everyone will get full credit on the task just for completing the task. If you don't complete one of the tasks, however, your grade (from the table above) will be docked 10%. (For example, an A- grade would become a B- grade.) You have the entire semester (until I submit grades) to complete these tasks.

You can find the details about the caveat tasks at:

  1. caveat_tasks/typespeed.md
  2. caveat_tasks/culture.md

Academic Integrity

Technology Policy:

  1. You must complete all programming assignments on the lambda server.

  2. You must use either vim or emacs to complete all programming assignments. In particular, you may not use the GitHub text editor, VSCode, IDLE, or PyCharm for any reason.

  3. You must not share your lambda-server credentials with anyone else.

Violations of any of these policies will be treated as academic integrity violations.

Collaboration Policy

You are encouraged to discuss all labs and homeworks with other students, subject to the following constraints:

  1. you must be the person typing in all code for your assignments, and
  2. you must not copy another student's code.

You may use any online resources you like as references.

WARNING:

All material in this class is cumulative. If you work "too closely" with another student on an assignment, you won't understand how to complete subsequent assignments, and you will quickly fall behind. You should view collaboration as a way to improve your understanding, not as a way to do less work.

You are ultimately responsible for ensuring you learn the material!

Accommodations Policy

I've tried to design the course to be as accessible as possible for people with disabilities. (We'll talk a bit about how to design accessible software in class too!) If you need any further accommodations, please ask.

I want you to succeed and I'll make every effort to ensure that you can.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].