CS 1112: Introduction to Computing Using MATLAB

Syllabus

Course
CS 1112: Introduction to Computing Using MATLAB
Instructor
Curran D. Muhlberger
Website
https://www.cs.cornell.edu/courses/cs1112/2021sp/
Alternative
CS 1110 (Python)

Key dates

  • Tuesday, February 9: First lecture
  • Wednesday, February 10: First discussion/lab section
  • Tuesday, March 30 (6:30pm): Prelim 1
  • Thursday, April 22 (6:30pm): Prelim 2
  • Thursday, May 13: Last lecture
  • Monday, May 24 (9:30am): Final exam

Course description

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.

4 credit hours. S/U option. Online audits welcome.

Expected outcomes

In CS 1112, 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.

Staff

Instructor

  • Curran D. Muhlberger (cdm89)

Teaching assistants

  • Anirudh Narayanan (am3246)
  • Courtney McBeth (clm325)
  • Raisa Rasul (rbr83)
  • Richard Phillips (rlp246)
  • Yashi Sanghvi (yds4)

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

Times & places

The mode of lecture instruction is hybrid online and rotational in person. Students registered for LEC 001 will attend lectures in person one day each week and online the other day; those registered for LEC 002 will attend online both days. Some discussion sections meet in person while others meet only online. All online interactions are synchronous, and attendance is expected. Recordings will be available for a limited time for students who must miss a lecture.

For in-person meetings, assigned days and seats will be posted to Canvas. For online meetings, Zoom links will be listed on Canvas.

Lecture Days Time Room Instructor
001 Tu, Th 2:40pm-3:30pm Anabel Taylor Hall B21 (One World Room) Dr. Muhlberger
002 Zoom
Discussion Days Time Room Instructor
201 W 11:20am-12:10pm Upson 225 Raisa Rasul
202 W 12:25pm-1:15pm Upson 225
203 W 1:30pm-2:20pm Upson 225 Yashi Sanghvi
204 W 3:45pm-4:35pm Zoom Anirudh Narayanan
205 W 10:10am-11:00am Zoom Richard Phillips
206 W 1:30pm-2:20pm Zoom Anirudh Narayanan

If participating in these discussion sections is a significant hardship due to a time zone difference, please inform the instructor to discuss possible alternatives.

Materials

  • 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.
  • Software: MATLAB
    • Current students can download MATLAB onto their personal computer for free! See Install MATLAB for instructions. Or use MATLAB Online via your web browser! Note: you must sign up for your MathWorks account using your Cornell email address.
    • All students can use MATLAB Online at public computer labs across campus. Some labs even have MATLAB installed.

Communication

This class will be managed through a variety of online tools, as each has different strengths and weaknesses. In order to minimize confusion, we will try to be consistent with how each are used:

  • Most announcements and materials will be posted to the public course website (not Canvas).
  • Assignment submissions and grades will be managed by CMS.
  • Canvas will be used for content that should only be accessible to students currently taking the course. This includes:
    • Zoom links for lectures and online discussion sections
    • Seating assignments for in-person sections
    • Panopto videos for additional lecture content
    • Ed Discussions for posting and replying to anonymous questions about course topics
    • Gradescope for viewing exam feedback

If you need to request special accommodation or discuss something one-on-one with an instructor, email is preferred.

Community of learning

We aim to create an inclusive learning environment where diversity and individual differences are respected and appreciated, and we expect students in this class to demonstrate diligence in understanding how others’ perspectives may be different from their own. Behaviors that contribute positively to our community of learning include:

  • Recognize that everyone is starting from different bases of knowledge. Be respectful and constructive when pointing out mistakes.
  • Listen to one another and, especially during group work, actively encourage everyone to contribute.
  • Help build a lively and active online learning environment:
    • Enable video during lecture, lab, and other group meetings.
    • Outside of class meetings, ask and answer questions on our discussion board, always remembering to be respectful and constructive.

Academic integrity

Integrity is a cornerstone of our learning community. 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 contributions from them when collaboration is allowed (e.g., group projects). When your individual effort is required (such as on an exam), 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 upheld, 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.

Assessment

This course is not a competition for grades. We do not “curve” scores in order to achieve some predetermined grade distribution, as that would emphasize ranking. Instead, we assign final grades based on individual performance with the following interpretations:

  • A: Student has mastered the material (can become a consultant and may be recommended by the instructor to join research groups on campus seeking new students with MATLAB computing experience).
  • B: Student is strong enough to continue in further computing courses, including CS 2110, and in the CS major.
  • C: Student has an adequate foundation in scientific and engineering computation but should consult with their advisor before enrolling in more advanced CS courses.

Grades of D and F are rare and typically result from missing work. With the “S/U” grade option, you need a ‘C-’ or better in order to receive an S.

We do not commit to hard grade boundaries, as rubrics need to be calibrated to the unique circumstances of each semester. As a point of reference, historically students in the ‘A’ range had scores over 93, those in the ‘B’ range scored above 80, and those scoring over 65 earned at least a ‘C-’.

Items that count towards your course grade include programming projects, weekly exercises, and exams:

  • Projects are medium-size programming assignments through which you synthesize the knowledge gained in recent weeks. For most projects you may work individually or with one partner (you may have a different partner on different assignments).

    You may drop your lowest project score provided that you scored at least 50% on that project. This helps accommodate an unusual, difficult situation without having to justify the circumstances to the instructor, so long as the submission still reflects a reasonable amount of effort. Submissions will be accepted one day late with penalty.

  • Exercises are short programming tasks that give you practice on the topics of the week. They are assigned weekly and you get help and additional instructions on them during your discussion section. Exercises are “graded” mostly on effort. You are encouraged to collaborate with discussion section classmates but you will submit your work as an individual.

  • Exams assess how well you have internalized the material so far in the course. Preliminary exams provide feedback on whether your study habits are sufficient to meet your learning goals, allowing you to adjust as necessary for the remainder of the semester.

    There will be two prelim exams and one final exam. Students in Ithaca must take the exams in person, while remote proctoring will be employed for those unable to come to campus.

Your course score is computed using roughly the following weights:

Exercises 5%
Projects 40%
Prelim 1 15%
Prelim 2 15%
Final 24%
Other (e.g. surveys) 1%

Special accommodation

You must write all exams at their scheduled times unless your request for special accommodation (medical reason, disability-related, athletic obligation, or exam conflict) has been approved beforehand. Any request for exam-taking accommodation (aside from sudden illness) must be made at least one week before the exam, with documentation from Student Disability Services if appropriate. If illness or mental health 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 have, or think you may have, a disability, please contact Student Disability Services for a confidential discussion (sds_cu@cornell.edu, 607-254-4545).
  • Once SDS approves your accommodation letter, it will be emailed to both you and the instructor. Please follow up with the instructor to discuss the necessary logistics of your accommodations.
  • If you are approved for exam accommodations please consult with the course instructor at least one week before the scheduled exam date to make the alternative testing arrangements.
  • If you need an immediate accommodation, please contact both the course instructor and SDS by e-mail.

Please be mindful of public health—if you do not feel well and normally attend lectures or labs in person, you are encouraged to participate online that week instead. 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

In addition to the topics below, we will practice the skills of problem analysis and decomposition as well as testing and debugging throughout the course.

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

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).