DSA‐23au‐Syllabus - TheEvergreenStateCollege/upper-division-cs-23-24 GitHub Wiki

Course Syllabus

Land Acknowledgement

The Evergreen State College is located on the ceded territories of the Medicine Creek Treaty Tribes, which include the Squaxin Island Tribe, the Nisqually Indian Tribe, and the Puyallup Tribe of Indians. The Olympia area was historically a center for trade and exchange among many Salish Sea tribes, including the Chehalis, the Skokomish, and others. With this awareness, we honor the ancestors and pay respect to elders past and present of the Medicine Creek Treaty Tribes, and to all Native peoples of this land. See also:  https://native-land.ca/Links to an external site.

Links to an external site.

Faculty

Paul Pham: [email protected]

Since I first taught at Evergreen in 2013, I've appreciated and benefitted from its multi-disciplinary view of the world, and the creativity and holistic spirit of its students and faculty. I've been a software engineer for Amazon's retail website and for Etsy's search infrastructure, and I've performed research at Microsoft and the Media Lab in embedded sensor networks, FPGA programming, and quantum computing architecture. I earned an S.B. and M.Eng in Electrical Engineering and Computer Science from MIT and a Ph.D. in Computer Science from the University of Washington, and have taught at CodeFellows in Seattle. My main interests within computing are cryptography, distributed systems, privacy, sustainable and affordable housing, software anthropology, and livecoding. Outside of computing, I enjoy bicycling, composting, strategy games, and geothermal earth tubes.

Richard Weiss: [email protected]

Office hours: Fri 3-4pm on Zoom (: 845 4890 4079, mathisfun) and in person (Lab1 1014)

Bio:

I came to Evergreen in 2005 because of its interdisciplinary approach to education, and I stayed because of the students and their interest in exploring and learning. I have an A.B. from Brandeis University and a Ph.D. in Mathematics from Harvard. I have taught at several other schools: Tufts University, Simmons College, Dartmouth College, University of Massachusetts at Amherst, Smith College, and Hampshire College. I have explored several areas of research, which still capture my interest: cybersecurity and cybersecurity education, computer vision and robotics, machine learning, computer architecture, computational geometry, and differential geometry. One of my current projects involves the application of machine learning to hands-on cybersecurity exercises. I have also worked as a software engineer and computer architect: Intermetrics (software engineering and applied math), Digital Equipment Corp (designing architecture for the Alpha 21364 chip).

Help

Links to an external site.

Zoom information (in case the link doesn't work):

Meeting ID (in the APP): 966 0143 6337

By phone +1 253 215 8782 meeting ID 966 0143 6337

The Writing CenterThe Writing Center Appointment Link

Links to an external site.

Hours for QuaSR and the Writing Center

    • Monday - Thursday: 12pm - 8pm
    • Friday: 12pm - 5pm
    • Saturday: Closed
    • Sunday: 12pm - 5pm
    • Closed Campus Holidays

Hours during Eval Week (the Writing Center only)

    • Monday - Tuesday: 10 am - 6 pm
    • Wednesday - Thursday: 10 am - 4 pm
    • Friday - Sunday: Closed

Weekly Schedule

  Monday Tuesday Wednesday Thursday Friday
10-12 Data Structures (Evans 2617) Systems and Teams (Evans 2617)   Data Structures (Evans 2617)  
12-1   Forest Walk   break tutoring
1-3 Cracking the Coding Interview/ Software Engineering (Evans 2617) ChangeMaker Lab Sem2 C4105   ChangeMaker Lab Sem2 C4105  
3-5   ChangeMaker Lab   ChangeMaker Lab  

 

Textbooks

Required

  • Links to an external site.
  • Cracking the Coding Interview – 189 programming questions and solutions, Gayle Laakmann McDowell, 6th edition (CCI)
    ISBN-13: 978-0984782857 

Optional

  • Links to an external site.
  • Dive into Systems (DIS)  Dive Into Systems Text: https://diveintosystems.org/book/
  • Links to an external site. 
  • Algorithn Design by Jon Kleinberg and Eva Tardos
  • Links to an external site.
  • Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
  • Links to an external site.
  • The Art of Computer Programming by Donald Knuth, Volumes 1-3
  • Summary

    You will have the freedom and responsibility to shape your own learning.

    Computer technology has an impact on almost anything we do, and data structures and algorithms are central to advanced study in computer science and to building large complex systems. When applying for positions such as Software Developer or Software Engineer, you will probably find that this program is key to solving the problems of medium to large sized organizations. It is also the most commonly asked material in technical job interviews. In this program, you’ll learn about ways to organize data (we’ll see various data structures such as Lists, Trees, Graphs), ways to compare algorithms (we’ll focus on space and time complexity using big O) and efficiently solve programming problems (sequential algorithms and parallel algorithms). It will also give you a chance to practice software design skills, both in the object-oriented and functional paradigms, and programming implementation skills.

    We are so excited to work with all of you in this awesome program.

    Learning Goals (Data Structures)

    • Be able to combine data structures and algorithms effectively
    • Learn technical and communication skills and build appropriate confidence to prepare you for a software job
    • Improve your programming skills in Java or a language of your choice
    • Improve your software design skills.
    • Be able to argue, either formally or informally, for correctness of heuristics.
    • Work collaboratively in teams, including pair programming

    Learning Outcomes

    By the conclusion of this course, each student should be able to:

    • Describe the basic concepts of data structure and algorithms
    • Conduct, critique, and submit conversations through AI chat to build up and verify their understanding.
    • Co-create a class discussion by asking and answering questions of their classmates; building a class knowledge graph.
    • Use IntelliJ for Java development (or another IDE for other languages) with autocomplete
    • Commit and push to a git repository to develop software, collaborate with teams, and submit assignments.
    • Find and discuss counterexamples and test cases that would exercise the "edges" of data structures and algorithms.
    • Describe and demonstrate the techniques of asymptotic analysis to measure time, space, and other resources.
    • Analyze the performance of searching, sorting, and any algorithm
    • Implement searching algorithms such as: sequential searching and binary searching 
    • Describe the RAM model of computation, arrays and linked nodes.
    • Implement data structures including: linked lists, trees, graphs, hash maps, sets, stacks, queues, heaps
    • Differentiate an abstract data type (ADT) interface operations, such as create, read, update, and delete
    • Understand and apply generic (class / template) types.
    • Identify and "reverse engineer" the data structures and algorithms that might be needed by organizations, businesses, or websites that you encounter regularly and that improve community life.
    • Implement several sorting algorithms such as: bubble sort, selection sort, insertion sort, merge sort, heap sort, and quick sort 
    • Compare and contrast different data structures.
    • Design or adapt data structures and algorithms for specialized, real-world problems
    • Discuss various social and ethical issues related to software development
    • Collaborate with other students to complete as a final project a moderate-sized proof-of-concept incorporating four or more data structures and algorithms.

    Policies

    COVID

    Health and Well-Being are central to student success, and at Evergreen we are committed to creating and maintaining a learning and working environment that is healthy, accessible, and equitable. 

    Any program/class member who feels ill with headache, excessive fatigue, fever, coughing, congestion, or other symptoms should stay home, and notify the faculty. 

    If you have questions or concerns please contact your faculty. If you wish to report a covid safety issue contact [email protected]  Links to an external site.

    Statement of Inclusion

    We welcome everyone regardless of race, gender, abilities, prior experience, language fluency, or other areas of diversity. We will all promote a cooperative and supportive atmosphere within our program that helps to ensure that all people have opportunity and encouragement to speak freely.  We will treat each person with civility and respect, especially when disagreeing with someone’s ideas, attitudes or assumptions.  We will remain sensitive to issues of racism, classism, sexism, abilism, homophobia, transphobia, and other forms of discrimination within the program context, and it is ok to make mistakes.
     In an Evergreen “learning community” we are all co-learners present in good will with the opportunity to learn from each other, and we all have a responsibility to cultivate conditions for collaborative learning. Community is a state of being in the world that requires our attention and work to achieve. In a learning community, we collaborate to expand our knowledge and abilities. Collaborative learning develops a set of skills and experiences that will equip you to deal with a broad array of situations in future learning and work of almost any kind.

    Inclusive Practices Policy

    Generous response to others’ requests for inclusive practices counts people in. Requests that someone speak more loudly or slowly, read aloud, follow inclusivity guidelines for presentations, write in large letters on the board, or enable captioning when available are requests to be included.

    By minimizing the presence of allergens and sensitivity-triggering fragrances on campus, Evergreen students, staff, and faculty make shared spaces available to people who live with otherwise-disabling conditions. To that end, please don’t wear strongly-scented products or smoke-saturated clothing in classrooms and offices. Read Evergreen’s Indoor Air Quality Policy (Air quality policy http://collab.evergreen.edu/policies/policy/airquality).

    College-wide policies allow smoking (including e-cigarettes) only in designated campus areas. Read Evergreen’s Smoking Policy (Smoking information https://evergreen.edu/facilities/smokers-information-center).

     

          </div>
        </div>
        <div id="right-side-wrapper" class="ic-app-main-content__secondary">
          <aside id="right-side" role="complementary">
    
          </aside>
        <div class="evgchat"><div class="libraryh3lp" style="" data-lh3-jid="[email protected]"><a href="https://canvas.evergreen.edu/courses/5926/assignments/syllabus#" onclick="window.open('https://libraryh3lp.com/chat/[email protected]?skin=28985&amp;referer=https%3A%2F%2Fcanvas.evergreen.edu%2Fcourses%2F5926%2Fassignments%2Fsyllabus', 'AskUs', 'resizable=1,width=475,height=400'); return false;"><img src="https://s3.amazonaws.com/libraryh3lp.com/us/buttons/ask-a-librarian/green-ask-a-librarian.png" alt="Ask a Librarian chat"></a></div></div></div>Course Syllabus
    

    On This Page FacultyHelp Meeting Times Textbooks Learning GoalsPoliciesTopicsAssignments Land Acknowledgement

    The Evergreen State College is located on the ceded territories of the Medicine Creek Treaty Tribes, which include the Squaxin Island Tribe, the Nisqually Indian Tribe, and the Puyallup Tribe of Indians. The Olympia area was historically a center for trade and exchange among many Salish Sea tribes, including the Chehalis, the Skokomish, and others. With this awareness, we honor the ancestors and pay respect to elders past and present of the Medicine Creek Treaty Tribes, and to all Native peoples of this land. See also: https://native-land.ca/Links to an external site.

    Links to an external site. Faculty

    Paul Pham: [email protected]

    Since I first taught at Evergreen in 2013, I've appreciated and benefitted from its multi-disciplinary view of the world, and the creativity and holistic spirit of its students and faculty. I've been a software engineer for Amazon's retail website and for Etsy's search infrastructure, and I've performed research at Microsoft and the Media Lab in embedded sensor networks, FPGA programming, and quantum computing architecture. I earned an S.B. and M.Eng in Electrical Engineering and Computer Science from MIT and a Ph.D. in Computer Science from the University of Washington, and have taught at CodeFellows in Seattle. My main interests within computing are cryptography, distributed systems, privacy, sustainable and affordable housing, software anthropology, and livecoding. Outside of computing, I enjoy bicycling, composting, strategy games, and geothermal earth tubes.

    Richard Weiss: [email protected]

    Office hours: Fri 3-4pm on Zoom (: 845 4890 4079, mathisfun) and in person (Lab1 1014)

    Bio:

    I came to Evergreen in 2005 because of its interdisciplinary approach to education, and I stayed because of the students and their interest in exploring and learning. I have an A.B. from Brandeis University and a Ph.D. in Mathematics from Harvard. I have taught at several other schools: Tufts University, Simmons College, Dartmouth College, University of Massachusetts at Amherst, Smith College, and Hampshire College. I have explored several areas of research, which still capture my interest: cybersecurity and cybersecurity education, computer vision and robotics, machine learning, computer architecture, computational geometry, and differential geometry. One of my current projects involves the application of machine learning to hands-on cybersecurity exercises. I have also worked as a software engineer and computer architect: Intermetrics (software engineering and applied math), Digital Equipment Corp (designing architecture for the Alpha 21364 chip). Help

    Quantitative & Symbolic Reasoning Center (QuaSR) - QuaSR Zoom Link

    Links to an external site.

    Zoom information (in case the link doesn't work):

    Meeting ID (in the APP): 966 0143 6337

    By phone +1 253 215 8782 meeting ID 966 0143 6337

    The Writing Center - The Writing Center Appointment Link

    Links to an external site.

    Hours for QuaSR and the Writing Center

        Monday - Thursday: 12pm - 8pm
        Friday: 12pm - 5pm
        Saturday: Closed
        Sunday: 12pm - 5pm
        Closed Campus Holidays
    

    Hours during Eval Week (the Writing Center only)

        Monday - Tuesday: 10 am - 6 pm
        Wednesday - Thursday: 10 am - 4 pm
        Friday - Sunday: Closed
    

    Weekly Schedule class meeting times. You can find the information in the Syllabus.

    Monday

    Tuesday

    Wednesday

    Thursday

    Friday

    10-12

    Data Structures

    (Evans 2617)

    Systems and Teams

    (Evans 2617)

    Data Structures

    (Evans 2617)

    12-1

    Forest Walk break

    tutoring

    1-3

    Cracking the Coding Interview/ Software Engineering

    (Evans 2617)

    ChangeMaker

    Lab

    Sem2 C4105

    ChangeMaker

    Lab

    Sem2 C4105

    3-5

    ChangeMaker

    Lab

    ChangeMaker

    Lab

    Textbooks

    Required

    The Algorithm Design Manual, 3rd edition, by Steven Skiena 
    

    Links to an external site. Cracking the Coding Interview – 189 programming questions and solutions, Gayle Laakmann McDowell, 6th edition (CCI) ISBN-13: 978-0984782857

    Optional

    Data Structures and Algorithms in Java, 3rd edition, by Mark Allen Weiss 
    

    Links to an external site. Dive into Systems (DIS) Dive Into Systems Text: https://diveintosystems.org/book/ Links to an external site. Algorithn Design by Jon Kleinberg and Eva Tardos Links to an external site. Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein Links to an external site. The Art of Computer Programming by Donald Knuth, Volumes 1-3

    Links to an external site.

    Summary

    You will have the freedom and responsibility to shape your own learning.

    Computer technology has an impact on almost anything we do, and data structures and algorithms are central to advanced study in computer science and to building large complex systems. When applying for positions such as Software Developer or Software Engineer, you will probably find that this program is key to solving the problems of medium to large sized organizations. It is also the most commonly asked material in technical job interviews. In this program, you’ll learn about ways to organize data (we’ll see various data structures such as Lists, Trees, Graphs), ways to compare algorithms (we’ll focus on space and time complexity using big O) and efficiently solve programming problems (sequential algorithms and parallel algorithms). It will also give you a chance to practice software design skills, both in the object-oriented and functional paradigms, and programming implementation skills.

    We are so excited to work with all of you in this awesome program. Learning Goals (Data Structures)

    Be able to combine data structures and algorithms effectively
    Learn technical and communication skills and build appropriate confidence to prepare you for a software job
    Improve your programming skills in Java or a language of your choice
    Improve your software design skills.
    Be able to argue, either formally or informally, for correctness of heuristics.
    Work collaboratively in teams, including pair programming
    

    Learning Outcomes

    By the conclusion of this course, each student should be able to:

    Describe the basic concepts of data structure and algorithms
    Conduct, critique, and submit conversations through AI chat to build up and verify their understanding.
    Co-create a class discussion by asking and answering questions of their classmates; building a class knowledge graph.
    Use IntelliJ for Java development (or another IDE for other languages) with autocomplete
    Commit and push to a git repository to develop software, collaborate with teams, and submit assignments.
    Find and discuss counterexamples and test cases that would exercise the "edges" of data structures and algorithms.
    Describe and demonstrate the techniques of asymptotic analysis to measure time, space, and other resources.
    Analyze the performance of searching, sorting, and any algorithm
    Implement searching algorithms such as: sequential searching and binary searching 
    Describe the RAM model of computation, arrays and linked nodes.
    Implement data structures including: linked lists, trees, graphs, hash maps, sets, stacks, queues, heaps
    Differentiate an abstract data type (ADT) interface operations, such as create, read, update, and delete
    Understand and apply generic (class / template) types.
    Identify and "reverse engineer" the data structures and algorithms that might be needed by organizations, businesses, or websites that you encounter regularly and that improve community life.
    Implement several sorting algorithms such as: bubble sort, selection sort, insertion sort, merge sort, heap sort, and quick sort 
    Compare and contrast different data structures.
    Design or adapt data structures and algorithms for specialized, real-world problems
    Discuss various social and ethical issues related to software development
    Collaborate with other students to complete as a final project a moderate-sized proof-of-concept incorporating four or more data structures and algorithms.
    

    Policies COVID

    Health and Well-Being are central to student success, and at Evergreen we are committed to creating and maintaining a learning and working environment that is healthy, accessible, and equitable.

    Any program/class member who feels ill with headache, excessive fatigue, fever, coughing, congestion, or other symptoms should stay home, and notify the faculty.

    If you have questions or concerns please contact your faculty. If you wish to report a covid safety issue contact [email protected] Links to an external site. Statement of Inclusion

    We welcome everyone regardless of race, gender, abilities, prior experience, language fluency, or other areas of diversity. We will all promote a cooperative and supportive atmosphere within our program that helps to ensure that all people have opportunity and encouragement to speak freely. We will treat each person with civility and respect, especially when disagreeing with someone’s ideas, attitudes or assumptions. We will remain sensitive to issues of racism, classism, sexism, abilism, homophobia, transphobia, and other forms of discrimination within the program context, and it is ok to make mistakes. In an Evergreen “learning community” we are all co-learners present in good will with the opportunity to learn from each other, and we all have a responsibility to cultivate conditions for collaborative learning. Community is a state of being in the world that requires our attention and work to achieve. In a learning community, we collaborate to expand our knowledge and abilities. Collaborative learning develops a set of skills and experiences that will equip you to deal with a broad array of situations in future learning and work of almost any kind. Inclusive Practices Policy

    Generous response to others’ requests for inclusive practices counts people in. Requests that someone speak more loudly or slowly, read aloud, follow inclusivity guidelines for presentations, write in large letters on the board, or enable captioning when available are requests to be included.

    By minimizing the presence of allergens and sensitivity-triggering fragrances on campus, Evergreen students, staff, and faculty make shared spaces available to people who live with otherwise-disabling conditions. To that end, please don’t wear strongly-scented products or smoke-saturated clothing in classrooms and offices. Read Evergreen’s Indoor Air Quality Policy (Air quality policy http://collab.evergreen.edu/policies/policy/airquality).

    College-wide policies allow smoking (including e-cigarettes) only in designated campus areas. Read Evergreen’s Smoking Policy (Smoking information https://evergreen.edu/facilities/smokers-information-center).

    ⚠️ **GitHub.com Fallback** ⚠️