DSA‐23au‐Syllabus - TheEvergreenStateCollege/upper-division-cs-23-24 GitHub Wiki
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.
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).
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
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
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 |
-
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
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.
- 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
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.
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.
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.
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&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
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).