Syllabus
- 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 2Tuesday, May 5: Last lectureMonday, 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:
- Textbook: Insight Through Computing: A MATLAB Introduction to Computational Science and Engineering by C. F. Van Loan and K.–Y. D. Fan. SIAM Publication, 2009, ISBN: 978-0-898716-91-7.
The e-book is available for free via the Cornell Library Portal by clicking the above link (off campus? use this proxy link). On that page scroll down to see the pdfs of the individual chapters. -
Either an iClicker system responder keypad (clicker) or a REEF Polling subscription
Clickers must be registered via Canvas (instructions)
Information on using REEF polling can be found at Getting Started with Mobile/Web Polling (Instructions for Students)
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
Your course score is computed using the following weights:
Exercises (E) | 4% (weekly exercises) |
Quizzes (Q) | 1% (in lecture and on Canvas) |
Projects 1–3 | 12.5% (unchanged) |
Projects 4–6 | 22.5% |
Prelim 1 (T1) | 20%* |
Test 2A | 8% |
Test 2B | 8% |
Final (F) |
* 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 | Working with Images (arithmetic in type uint8 ) |
12.4 | |||
17 | Character arrays, linear search | 9.1 | |||
18 | Cell array |
8.1, 11.1, 11.2 Cell/Struct Syntax Summary |
|||
19 | File I/O |
9.2, 11.1, 11.2 | |||
10.1–10.3 | |||||
Objects and Classes |
Why object-oriented design? Role of classes |
||||
4/21 Tu | |||||
Class definition—properties & methods | |||||
Array of objects, overloading, constructor that handles variable number of args | |||||
Why OOP? Private vs. public, Inheritance | OOP syntax summary | ||||
Read class Die , constructor of TrickDie .
|
|||||
Recursion | 14.1 | ||||
5/5 Tu | Test 2B 4:30pm EDT +48h | ||||
Sort and search | 8.2, 9.2, 9.3 | ||||
Divide and Conquer | 14.2, 14.3 | ||||
Final Exam |
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.