Course Syllabus

UC Irvine Department of Computer Science
ICS 31: Introduction to Programming

Course Objective

This course is an introduction to the fundamentals of computer programming, which is the foundation of Computer Science. Students design, write, and debug computer programs. No prior knowledge of programming is assumed.

Course Learning Outcomes

Throughout the course, students will:

  • Recognize and apply common programming patterns: accumulation, counting, modularity, minimum/maximum/average.
  • Describe the principles of structured programming and be able to describe, design, implement, and test structured programs using currently accepted methodology.
  • Analyze simple problem statements to identify relevant information and select appropriate processing to solve the problem.
  • Discuss the importance of algorithms in the problem-solving process.
  • Discuss how a problem may be solved by multiple algorithms, each with different properties.
  • Use a programming language to implement, test, and debug algorithms for solving simple problems.
  • Implement, test, and debug simple functions and procedures.
  • Be able to read and trace code.
  • Identify common errors in Python code and use computing terminology to describe them.
  • Breakdown simple problems, plan their solutions and implement interactive programs for those problems.
  • Use the Seven Steps, discuss its value and demonstrate its application.
  • Recognize and construct common programming idioms: variables, loop, branch, functions, composition, aggregated data (arrays, lists, etc.) and input/output.
  • Adapt and combine standard algorithms to solve a given problem (includes numerical as well as non-numerical algorithms).
  • Simulate execution of a Python program in a visualization environment.
  • Explain what a given program (in Python) does.
  • Identify the issues impacting correctness and efficiency of a computation.
  • Evaluate & Critique programs that implement the same algorithm for style, efficiency, and patterns.
  • Identify the relative strengths and weaknesses among multiple designs or implementations for a problem.
  • Algorithm/Data: Identify common errors in Python code and use computing terminology to describe them.
  • Adequately use standard programming constructs: repetition, selection, functions, composition, modules, aggregated data (arrays, lists, etc.).
  • Identify and repair coding errors in a program.
  • Trace the execution of a variety of code segments and write summaries of their computations.
  • Apply a variety of strategies to the testing and debugging of simple programs.
  • Apply consistent documentation and program style standards that contribute to the readability and maintainability of software.
  • Construct, execute and debug programs using a modern IDE and associated tools such as unit testing tools and visual debuggers.
  • Analyze the extent to which another programmer’s code meets documentation and programming style standards.
  • Explain the concept of modeling and the use of abstraction that allows the use of a machine to solve a problem.
  • Modify and expand short programs that use standard conditional and iterative control structures and functions.
  • Choose appropriate conditional and iteration constructs for a given programming task.
  • Implement meta-cognitive learning strategies to master programming language concepts in Python.

A comprehensive list of Learning Outcomes for ICS 31 mapped to the ACM/IEEE Computing Curriculum Standards.

Class Format

To become fluent in a language, one must be immersed in it. Therefore, ICS 31 has been designed as a mixture of lecture & lab activities, with an interactive textbook designed to help you engage with material before, during, and after lecture.

Just as in industry, we believe that the best work/learning takes place when we're together.

NOTE: Students who plan on majoring in ICS should spend 20-hours a week working on ICS31 activities.

Participation

This course incorporates a “blended learning” format. In our case, this means that a portion of the lecture and reading material is presented in interactive, online modules and more time is spent programming together in class. Essentially, the course consists of three primary components.

  1. Online learning modules: Before new topics are discussed in class, you will be expected to complete their corresponding reading and activities on ZyBook, our online textbook. These are usually multiple readings, or Participation Activities (PAs) per week, and a handful of Challenge Activities (CAs) due the following Saturday. Further differentiation between the two can be found here: What are PAs/CAs?
  2. In-class discussion and application of principles: Our time together during lecture will focus on design concepts and application of the principles taught in the online learning module. Lecture is interactive and you will be answering questions, coding solutions to problems.
    In order to accommodate the circumstances of all students, we are providing the option for you to attend lecture either synchronously(live), or asynchronously(recorded).
    • Synchronous attendees will submit answers through PollEverywhere.
    • Asynchronous attendees will be given 24-hours to watch the video & complete the Yuja Quiz. NOTE: Students who attend synchronously(live), do not need to complete the Yuja Quiz.
    • Credit for Lecture Activities will begin starting Week 3.
    • YUJA GRADING POLICY:

      Yuja quiz scores will be based on correctness, and not participation. I know this may be an unpopular policy, but manually grading Yuja quizzes is very time intensive. We have a single reader assigned to our course, and we need to use his time as efficiently as possible across all of the items that need to be manually graded.

      But as long as the quiz is open, you may take it as many times as you'd like to earn the grade that you'd like to earn. And since you have more time to answer questions than a synchronous student does, you can pop open PythonTutor, test out the code/question, and be confident in your answer.

  3. Lab Activities: Weekly lab activities will be assigned that correspond to material covered in lecture &/or via reading. A TA and one or more tutors will be available in lab to provide support and guidance.

** ZyBook Participation Activities(PA) are due at 9AM before the start of class. No exceptions.

** ZyBook Challenge Activities(CA) are due Saturday of the week they were assigned. CAs are never due before Participation Activities.

NOTE: ZyBook credit is given for percent completed, regardless of the number of sections assigned for a particular date. Scoring is based on percent completed at the precise day and time indicated. See our Lab Policies page for the specific grade breakdown

Required Resources

Textbook:

Purchase the course textbook through ZyBooks:
https://learn.zybooks.com/zybook/UCIICSCI31AlfaroFall2019

  1. Sign up at ZyBooks.com
  2. Enter zyBooks code: UCIICSCI31Fall2020
  3. Click 'Subscribe'
    Note: Payment is required at time you subscribe.

To help you get up and running quickly, the first chapter is free. If you were able to score scholarships/financial aid to assist you with the purchase of your books, read the following ZyBooks article which helps explain how to buy a ZyBook using financial aid.

Laptop:

We will be using laptops extensively during lecture. Be your laptop is fully-charged & ready to code.

If you haven't been able to get a laptop yet, please consider taking advantage of Financial Aid.

Grading

The grading system for ICS31 has been designed to spread points across many different learning activities & a variety of assessments. This allows learners to fail an initial exam, and still have the opportunity to pass the class, or even earn an A. Many 31 students have *INCREDIBLE* comeback stories, but not without much persistence& dedication.

Grading is broken up into the following categories, and each category is explained below.

Participation:

ZyBooks Participation/Challenge & In-Class Activities: 15% (Lowest 2 scores dropped)

Labs:

Lab Activities: 30% (Lowest score dropped)

Exams:

Midterm: 10%

Final: 15%

Lab Exams: 30% 

Grading Scale:

Given that we are all living/learning in a pandemic & to help you relax mentally about your grade in ICS31, course grades will be calculated on a modified straight-scale.

A        93.0 <=  score

A-      90.0 <=  score < 93.0

B+     86.0 <=  score < 90.0

B        83.0 <=  score < 86.0

B-      80.0 <=  score < 83.0

C+    76.0 <=  score < 80.0

C      73.0 <=  score < 76.0

C-    60.0 <= score  <  73.0

D      score  <  60

Exams

Midterm/Final:

There will be one midterm exam during the quarter, and a final exam. The format will be online, but that is all we currently know. We will update you with more information as the exam date approaches.

Lab Exams:

There will be four lab exams. Check the Modules page for dates. You will take the first two, and choose the format of your third. Each will count as 10% of your overall grade. 

Labs

Please refer to our Lab Policies page for details in regards to structure, philosophy & deadlines.

Student Conduct:

Cheating/Plagiarism:

You are free to discuss ideas and strategies for approaching problems with others, but first read Dr. Kay's Guidelines on Collaboration . Do not share/show code with anyone other than your partner. Each student must complete his/her own work. Cheating and plagiarism WILL NOT BE TOLERATED. If a student is found cheating or plagiarizing material written by someone else (including information posted on websites), that student will fail this course and should expect to face disciplinary proceedings.

No Extra Credit Policy/Late Submissions:

If you are having problems with the assignments or tests, contact the instructor as soon as possible. While there will be small extra credit opportunities offered throughout the quarter, they will not be enough to cover missing assignments. It will NOT be possible to earn extra credit to improve a poor grade at the end of the quarter.

Need Support?:

Any student who feels he or she may need an accommodation due to a disability should contact the UCI Disability Services Center at (949) 824-7494 as soon as possible to explore the possible range of accommodations. We encourage all students having difficulty, whether or not due to a disability, to consult privately with the TA or instructor at any time.