CS 1112: Introduction to Computing using MATLAB

Syllabus

Insertions and deletions reflect changes due to COVID-19. Dates are subject to change.
Course
CS 1112: Introduction to Computing using MATLAB
Instructors
Curran D. Muhlberger & K.–Y. Daisy Fan
Website
https://www.cs.cornell.edu/courses/cs1112/2020sp/
Alternative
CS 1110 (Python)

Key dates

  • Tuesday, January 21: First lecture
  • Tuesday/Wednesday, January 21–22: First discussion/lab section
  • Tuesday, March 10 (19:30): Prelim 1
  • Tuesday, April 21 (19:30): Prelim 2
  • Tuesday, May 5: Last lecture
  • Monday, May 11 (9:00): Final exam
  • Tuesday, April 21 (16:30 EDT + 48h): Test 2A
  • Tuesday, May 5 (16:30 EDT + 48h): Test 2B
  • Tuesday, May 12: Last lecture
  • Monday, May 18 (9:00 EDT + 48h): Final exam

Course description

4 credit hours. S/U Optional. Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. NO programming experience is necessary; some knowledge of Calculus is required.

Expected outcomes

In CS1112, students will acquire the following skills:

  • Be fluent in the use of procedural statements—assignments, conditional statements, loops, function calls—and arrays.
  • Be able to design, code, and test small MATLAB programs that meet requirements expressed in English. This includes a basic understanding of top-down design.
  • Have knowledge of the concepts of object-oriented programming as used in MATLAB: classes, subclasses, properties, inheritance, and overriding.
  • Have knowledge of basic sorting and searching algorithms.
  • Have knowledge of basic vector computation.
  • Have a working familiarity with graphics tools in MATLAB.

Times & places

Lecture Days Time Room Instructor
001 Tu, Th 11:15am-12:05pm Statler 185 (not balcony) Muhlberger/Fan
Discussion Days Time Room Instructor
201 T 12:20pm-1:10pm Upson 225 (lab) & HLS 401 Noam Eshed / June Cho
202 T 1:25pm-2:15pm Upson 225 (lab) & HLS 401 Zhilong Li
203 T 2:30pm-3:20pm Upson 225 (lab) & HLS 401 Zhilong Li
205 W 10:10am-11:00am Upson 225 (lab) & HLS 401 Qinru Shi
206 W 11:15am-12:05pm Upson 225 (lab) & HLS 401 Qinru Shi
207 W 12:20pm-1:10pm Upson 225 (lab) & HLS 401 Noam Eshed
208 W 1:25pm-2:15pm Upson 225 (lab) & HLS 401 Noam Eshed
209 W 2:30pm-3:20pm Upson 225 (lab) & HLS 401 Vaishnavi Dhulkhed

The first two weeks, and then every other week, discussion will take place in the lab instead of the regular classrooms. A reminder of the section location will be posted every Monday.

Staff

Instructors

  • Curran D. Muhlberger (cdm89)
  • K.–Y. Daisy Fan (daisy.fan)

Teaching assistants

  • June Cho (sc782)
  • Vaishnavi Dhulkhed (vd89)
  • Noam Eshed (ne236)
  • Zhilong Li (zl242)
  • Qinru Shi (qs63)

See the Staff page for additional course staff and office hours.

Material

Required material:

Required software: MATLAB Student Version

  • Current students can download MATLAB student version onto their personal laptop for free! Get MATLAB through the CU Software Licensing Store at http://licensing.store.cornell.edu. Or use MATLAB Online via your web browser! You will need this license number and activation key and you must sign up for the account using your Cornell email address.
  • All students can use MATLAB Online at public computer labs across campus. Some public labs have MATLAB installed: on the Engineering Quad (Upson, Carpenter, Phillips) and in Robert Purcell on north campus.

Communication

Course announcements and materials will be posted to the course website (not Canvas). Assignments and grades will be managed by CMS. If you have a question about course material, post it to Piazza; public posts are preferred so others can benefit from the discussion (they’re still anonymous to other students). If you need to request special accommodation or discuss something one-on-one with an instructor, email is preferred.

Academic integrity

Simply put, academic integrity is about respecting yourself and respecting others. You respect yourself by submitting work completed through your own effort; you respect others by acknowledging contribution from others when such external contribution is allowed, e.g., for group projects. When your individual effort is required, for exams and in-class quizzes, you may neither seek nor accept help from others. You must read the complete Code of Academic Integrity as it applies to this course. Ignorance of the Code is not an acceptable excuse.

If we suspect that the Code of Academic Integrity is not being obeyed, we may upload student submissions to 3rd-party services that detect plagiarism; enrollment in this course implies consent for your submissions to be used in this manner.

Grades

You must adhere to the Code of Academic Integrity for all work.

Items that count towards your course grade include homework (programming projects), weekly exercises, quizzes, and exams (prelims and final).

  • Homework projects. Students may drop one project out of six for the purpose of course grade calculation provided that they scored at least 50% on that project. A project score below 50% cannot be dropped.
    Rationale: Dropping a poor project score helps deal with an unusual, difficult situation, e.g., you have an extraorinarily busy week that results in your giving less effort than usual on a homework project. However, in order to discourage students from simply skipping a project or just doing a superficial job on it, a project must reflect a reasonable amount of effort—defined for this purpose as 50%—in order to be eligible to be dropped.
    Example 1: Your six project scores (each out of 10) are 9, 10, 9, 5.2, 9, and 8. Then your average project score for final grade calculation is 45/5=9.0—the lowest score, which is at least 50%, is dropped.
    Example 2: Your six project scores (each out of 10) are 9, 10, 9, 2.2, 9, and 8. Then your average project score for final grade calculation is 47.2/6=7.9—the lowest score is not dropped.
  • Exercises are assigned weekly and you get help and additional instructions on them during your discussion section. Exercises are "graded" mostly on effort; you must show your completed exercise (usually by demonstrating your code) to a TA or a consultant either during discussion section or during consulting in order to get credit for it. Some exercises will be checked using MATLAB Grader, an online tool.
  • In-class questions (quizzes) usually are done using clickers but will be conducted as Canvas quizzes after Spring Break. For each question,
    • earn one point for submitting an answer
    • earn another point for getting the correct answer
    You will get full credit (1% of course grade) if you earn half of the maximum possible number of quiz points. We will start counting the questions as quiz questions after the "Add deadline," end of week 2. This grading scheme still applies to Canvas quizzes (so ignore the raw score you see in Canvas).

Your course score is computed using the following weights:

Exercises (E) 4% (weekly exercises)
Quizzes (Q) 1% (in lecture and on Canvas)
Projects (P) 25%
Projects 1–3 12.5% (unchanged)
Projects 4–6 22.5%
Prelim 1 (T1) 20%*
Prelim 2 (T2) 20%
Test 2A 8%
Test 2B 8%
Final (F) 30% 24%

* As Prelim 1 was taken under the stress of the first COVID-19 announcement, it may not accurately reflect students’ mastery of the material. Therefore, students who complete all remaining exams may replace their Prelim 1 score with the average of their other exam scores. We will automatically use the higher of the two scores when assigning final grades.

Your course grade will follow the "cut-off" structure given below. You need a course score higher than 55 (out of 100) to get a "D" ("marginal pass"). Note that your College (or Major) may require a "C-" to be a passing grade.

     Overall score    Letter grade
        > 93           A-, A, A+ 
        > 80           B-, B, B+
        > 65           C-, C, C+

With the "S/U" grade option, you need a "C-" or better (determined as stated above) in order to receive an "S".

Special accommodation

You must write all prelims and the final exam at their scheduled time unless your request for special accommodation (medical reason, disability-related, athletic obligation, or exam conflicts as posted on the University exam schedule) has been approved beforehand. Any request for exam-taking accommodation (aside from sudden illness) must be made at least two weeks before the exam, with documentation from Student Disability Services if appropriate. If you have an illness that prevents you from completing required work, email the course instructor as soon as possible to make an alternative arrangement for the missed work.

Students with Disabilities: Your access in this course is important. Please give course staff your Student Disability Services (SDS) accommodation letter early in the semester so that we have adequate time to arrange your approved academic accommodations. If you need an immediate accommodation, please speak with us after class or send an email message to us and/or SDS. If the need arises for additional accommodations during the semester, please contact SDS.

Please be mindful of public health—if you fall ill and are highly contageous, try to refrain from spreading the disease to your peers and course staff. We will provide opportunities to review missed material when you have recovered. But do still attempt to complete projects on time (remember: you can drop a low project score so long as you made a good attempt given your condition).

Lecture schedule

No. Date Topics Reading (Insight)
1 1/21 Tu Introduction Preface & Software sections
2 1/23 Th Programming basics 1.1, Exercise 1
3 1/28 Tu Conditionals 1.2
4 1/30 Th Nested conditionals; logical operators 1.2
5 2/4 Tu Iteration: for 2.1
MatTV: Troubleshooting Loops
6 2/6 Th Iteration: while 2.2, 3.2
7 2/11 Tu Developing algorithms; nested loops 3.1
8 2/13 Th User-defined functions 5.1, 5.2
9 2/18 Tu Executing a user-defined function 5.3
MatTV: Executing a Function
10 2/20 Th Vectors, simulation 6.1
2/25 Tu February Break
11 2/27 Th Probability and averages, vectors 6.2, 6.3
12 3/3 Tu Discrete vs. continuous; linear interpolation 4.1–4.3
13 3/5 Th Vectorized computation, 2-d Arrays—matrix 7.1
14 3/10 Tu Matrix examples 7.2, 7.3
3/10 Tu Prelim 1 7:30 – 9:00pm
15 3/12 Th Working with Images
(Vectorized code on multi-dimensional array)
12.1, 12.2
3/14-3/27 Classes suspended (COVID-19)
3/28-4/5 Spring Break
16 3/17 4/7 Tu Working with Images (arithmetic in type uint8) 12.4
17 3/19 4/9 Th Character arrays, linear search 9.1
18 3/24 4/14 Tu Cell array 8.1, 11.1, 11.2
Cell/Struct Syntax Summary
19 3/26 4/16 Th File I/O, Structure variable 9.2, 11.1, 11.2
3/28-4/5 Spring Break
20 4/7 Tu More on Structures and structure arrays 10.1–10.3
21 20 4/9 Th 4/21 Tu Objects and Classes Why object-oriented design?
Role of classes
4/21 Tu Prelim 2Test 2A 7:30 – 9:00pm 4:30pm EDT +48h
22 21 4/14 Tu 4/23 Th Class definition—properties & methods
23 22 4/16 Th 4/28 Tu Array of objects, overloading, constructor that handles variable number of args
24 23 4/21 Tu 4/30 Th Why OOP? Private vs. public, Inheritance OOP syntax summary
25 4/23 Th Extending a class Read class Die, constructor of TrickDie.
26 24 4/28 5/5 Tu Recursion 14.1
5/5 Tu Test 2B 4:30pm EDT +48h
27 25 4/30 5/7 Th Sort and search 8.2, 9.2, 9.3
28 26 5/5 5/12 Tu Divide and Conquer 14.2, 14.3
5/11 5/18 M Final Exam 9:00 – 11:30am 9:00am EDT +48h

Copyright notice

All materials distributed in this course are copyrighted and may not be distributed further (unless otherwise indicated). They are intended for your sole use and may not be reposted on any public or private website or by any other sharing method (e.g. fraternity exam files). In addition to breaking copyright law, such distsribution shall be considered a violation of academic integrity.