Syllabus, CS16, Summer 2018

Basic Facts

Required Resources

Official UCSB Catalog Description

CMPSC 16: Problem Solving with Computers I

Prerequisite: Mathematics 3A with a grade of C or better (may be taken concurrently)

Recommended Preparation: CS 8 or Engineering 3, or significant prior programming experience.

Repeat Comments: Legal repeat of CMPSC 10.

Fundamental building blocks for solving problems using computers. Topics include basic computer organization and programming constructs: memory CPU, binary arithmetic, variables, expressions, statements, conditionals, iteration, functions, parameters, recursion, primitive and composite data types, and basic operating system and debugging tools.

A few course policies in brief

You may NOT:

What this course is about

CS16 is the first course in a three-course sequence (CS16, CS24, CS32). The purpose of this sequence is to provide a solid foundation of algorithms and data structures.

What you need before taking this course

CS16 assumes students already have some programming experience and have completed an introductory computer science course similar to CS8.

This course will present C++ from the beginning; no prior knowledge of C++ is assumed. You should be comfortable with all of the following:

  • Problem solving
    • breaking down a problem into a sequence of steps
    • abstracting specific problems into general ones
      and finding general solutions
  • Memory concepts
    • variables, primitive vs. reference variables, name, type, value
    • assignment statements
    • scope of variables
  • Control structures
    • for loops, if/else, while loops
  • Arrays (or a similar data structure, e.g. Lists in Python)
    • index vs. value, finding sum, min, max, average, count of elements matching some condition, making a new list of elements containing only those that match some condition
  • Functions
    • function call vs. function definition
    • formal vs. actual parameters (arguments)
  • Testing
    • How to test your code
  • Input/output concepts
    • Writing to the terminal
    • Reading from the keyboard
    • Reading and writing to files
    • Neatly formatting output
  • Program style
    • How to write code that other people can read and understand

So, what is it that you need to know by the end of this course? Here’s the list of just a few of the things you’ll need to know to be ready for CS24 (the next programming course). You’ll have the opportunity to learn all of these things (though not necessarily in this order).

Learning the details of programming requires A LOT of practice, like learning any new skill. Making mistakes is an essential part of learning as long as you learn from them! Questions like “I wonder what will happen if I do this…” or “How will C++ behave in this case…” is a great way to investigate and observe the functionality and limitations of a programming language (there are many programming languages available to software developers and each have their specific pros and cons that may or may not be the best choice for the problems you are trying to solve).

I find the best way to practice is to rapid prototype constantly. Writing simple snippets of code to test and confirm your understanding allows you to 1) practice typing out code, which makes you more comfortable with the language and 2) solidify your understanding of the specific behavior of the programming language functionality.

Course Grades

Letter grades will be determined by the end of the course after all labs, homeworks, and exams have been computed. I can say that I will not grade harder than a traditional straight scale (90% = A-, 80% = B-, etc.). However, I will adjust the letter grades accordingly based on your overall performance at the end of the course. If you are concerned about your grade in the class, I encourage you to discuss the matter with me during my office hours. Please come talk to me sooner rather than later so there can be some time where we can help you succeed in the course.

Your course grade will be determined as follows:

Grade Item Percentage of Final Grade
Midterm 1 (Tues. 7/17) 15 %
Midterm 2 (Tues. 8/14) 15 %
Final (Thurs. 8/30) 30 %
Homeworks 10 %
labs 30 %

In general, homeworks will be assigned periodically throughout the quarter, and are due in lecture on the due date.

There will be labs assigned throughout the quarter. You will work on the labs during your assigned lab section, and most likely on your own time outside of your assigned lab section. Please be sure to check the due dates for all assignments on the course page and calendar.

Late work

I will consider late submissions only for medical or family emergencies where documentation can be provided. This does not include overwhelming workload from other courses, scheduling conflicts, or vacation plans.

Accommodations for disabilities

Students with disabilities may request academic accommodations for exams online through the UCSB Disabled Students Program at http://dsp.sa.ucsb.edu/. Please make your requests for exam accommodations through the online system as early in the quarter as possible to ensure proper arrangement.

Managing stress

Personal concerns such as stress, anxiety, relationships, depression, cultural differences, can interfere with the ability of students to succeed and thrive. For helpful resources, please contact UCSB Counseling & Psychological Services (CAPS) at 805-893-4411 or visit http://counseling.sa.ucsb.edu/.

Responsible scholarship

Honesty and integrity in all academic work is essential for a valuable educational experience. The Office of Judicial Affairs has policies, tips, and resources for proper citation use, recognizing actions considered to be cheating or other forms of academic theft, and students’ responsibilities, available on their website at: http://judicialaffairs.sa.ucsb.edu. Students are responsible for educating themselves on the policies and to abide by them.

Furthermore, for general academic support, students are encouraged to visit Campus Learning Assistance Services (CLAS) early and often. CLAS offers instructional groups, drop-in tutoring, writing and ESL services, skills workshops and one-on-one consultations. CLAS is located on the third floor of the Student Resource Building, or visit http://clas.sa.ucsb.edu

Standard Disclaimer

This syllabus is as accurate as possible, but is subject to change at the instructor’s discretion, within the bounds of UC policy.