Announcements
- There will be two review sessions for the final exam. Tuesday, May 1 from
1-4pm with Rich and Ameet and Wednesday, 7-9pm with the ninjas. Both sessions
will be in Science Center 240.
- The Final Exam study guide has been posted below. As a reminder,
the final exam is May 3 from 7-10pm in Science Center 101
Provide anonymous course feedback here
This syllabus is a living document; please be aware that many elements on this page will change throughout the semester, including the course schedule. It is the student's responsibility to review this page periodically for updates.
Class Info
Section 1: Tuesday, Thursday 9:55–11:10am, Science Center 240
Professor: Ameet Soni
email:
Office: Science Center, Rm 253
Office hours: 10:00-noon Monday, or by appointment
Welcome to CS21B. This course will introduce fundamental ideas in
computer science while also teaching you how to write computer programs
while exposing you to applications in biology. We will study algorithms
for solving problems and implement solutions in the
Python programming language. Python
is an interpreted language that is known for its ease of use. We also
introduce object-oriented programming and data structures. A deeper
coverage of these topics will be presented in CS 35.
This course is appropriate for all students who want to learn how to write
computer programs and think like computer scientists. It is the usual first
course for computer science majors and minors. Students with advanced
placement credit or extensive programming experience should place out of
this course and instead begin with CS 33 or CS 35.
Required Textbook:
Goals for the course:
By the end of the course, we hope that you will have developed the
following skills:
- Given a program, be able to simulate on paper how a computer would
execute the program, and show the results that would be produced.
- Given a problem, be able to design a clear, concise, and
correct pseudocode algorithm to solve it.
- Given a pseudocode algorithm, be able to successfully implement it in
Python.
- Be able to use top-down design to sub-divide a large problem into
reasonably-sized modular sub-problems.
- Given several algorithms for solving the same problem, be able
to analyze which algorithm would be more efficient in terms of running
time.
- Develop debugging and unit testing skills. Consistently use
these skills while implementing programs.
- Learn to work as part of a team to solve problems starting from
design and continuing through to implementation.