CSE 101: Computer Science Principles

Syllabus

Term: Spring 2021
Instructor: Alex Kuhn (alex.kuhn@sunykorea.ac.kr, Office B423, +82-32-626-1230)
Lectures: Tue & Thu 5-6:20 pm
Labs: Mon 12:30-1:50 pm
Office Hours: Mon 2-3:30 pm & Wed 3-4:30 pm via
Zoom
Course Homepage: 
http://www3.cs.stonybrook.edu/~alexkuhn/cse101-spring2021/

Note that this class will be fully online via Zoom. You need to join the Zoom URL while logged in to Zoom with your Stony Brook Email.

Teaching assistants (TA) are available for tutoring via Zoom during their scheduled times:

Yujeong Shin (Tutoring)
yujeong.shin@stonybrook.edu

Tuesday 5 – 9:10 PM

Thursday 5 – 9:00 PM

Kakao: syj0704

Zoom:https://stonybrook.zoom.us/j/9897910184?pwd=MVcyVk1PS0EyS29lbDdVSmwxV0NlQT09

Daniiar Zholmatov (Tutoring)
daniiar.zholmatov@stonybrook.edu

Tuesday 8 – 11:30 PM

Thursday 7 - Midnight

Kakao: zholmatov00

Zoom:https://stonybrook.zoom.us/my/zholmatov?pwd=MXhpR0J1cUpGNmd0aVlBRklQeVZYdz09

Roshan Poudel (Tutoring)
roshan.poudel@stonybrook.edu

Sunday 6 – Midnight

Tuesday 8 – 10:30 PM

Zoom:https://stonybrook.zoom.us/j/95972108693?pwd=NGJSZ0RqTmZlRFlrTHc4MThDd0F0QT09

Hyunyoung Kim (Tutoring)

hyunyoung.kim.1@stonybrook.edu

Monday 7 – 11 PM

Tuesday 7 – 11:30 PM

Kakao: kimhy7777

Zoom:https://stonybrook.zoom.us/j/96000334330?pwd=TEJHZWxqMHo4NHlOeXd6L1lUTkRxUT09

Azimbek Khudoyberdiev (Graduate Assignment Grading TA)
azimbek.khudoyberdiev@stonybrook.edu

Monday 7 – 8:30 PM
Wednesday 8 – 9:30 PM
Zoom: https://stonybrook.zoom.us/j/7980644287?pwd=eGkwNEpHRUhEYW1RM0J3eWJNRGJVUT09

Course Description

Introduces central ideas of computing and computer science, instills practices of algorithmic and computational thinking, and engages students in the creative aspects of the field. Also introduces appropriate computing technology as a means for solving computational problems and exploring creative endeavors. Includes weekly computer programming assignments, but assumes no previous programming experience.

Course Learning Outcomes

-       An ability to use computing tools and techniques to create computer program artifacts.

-       An ability to use multiple levels of abstraction, models, and simulation in computation.

-       An ability to use algorithms to develop and express solutions to computational problems. 

Textbooks

Required Texts:

Explorations in Computing: An Introduction to Computer Science and Python Programming by John S. Conery. Chapman and Hall/CRC, 2014. ISBN 978-1466572447.

This book provides a solid introduction to algorithmic thinking and programming in Python.

While completing the assigned readings, students are expected to complete the tutorials at the end of each section of each chapter. These tutorials reinforce the concepts in each chapter and provide practical, hands-on experience in Python programming. The tutorials also supplement the material covered in lecture, lab and homework. Students are responsible for completing the assigned readings and tutorial exercises in preparation for examinations. The exercises in the text use a set of modules called PythonLabs (We will install it when we are ready to use it.)

How to Code in Python 3 by Lisa Tagliaferri, Digital Ocean, New York, NY. ISBN 978-0-9997730-1-7.

This text focuses more on Python syntax and semantics. Students are expected to read assigned chapters of this text. Since it is not focused on algorithms, but only language elements, the text will help develop a solid understanding of the Python programming language itself.

Optional Texts:

There are two optional texts that you can use during the course, both are freely available at the provided links.

Learn Python - Free Interactive Python Tutorial. The first section of the tutorial ("Learn the Basics") may be good to go through in sync with our lectures.

Blown to Bits: Your Life, Liberty, and Happiness after the Digital Explosion, by Hal Abelson, Ken Ledeen, and Harry Lewis, Addison-Wesley. 2008. ISBN 0137135599. 

Grading

You course grade will be based on the following formula:

Class Participation: 5%

Assignments: 25%

Labs: 10% Weekly graded laboratory assignments.

Quizzes: 40% Programming quizzes will be given on concepts from class. The lowest quiz grade will be dropped.

Comprehensive Final Exam: 20% An exam covering all the concepts covered during the semester.

Your final grade is calculated by the points you accumulate in each category, weighted by the percentage of each category.

Grade Cutoffs: A [93-100], A- [90-93), B+ [87-90), B [83-87), B- [80-83), C+ [77-80), C [73-77), C- [70-73), D+ [67-70), D [63-67), F [0-63). Grade cutoffs may be adjusted downwards if warranted by the grade distribution at the end of the semester.

Important note: You must attain a grade of at least 50% on quizzes and also at least 50% on assignments to achieve a grade higher than C-.  Additionally, if you have over 20% unexcused absences, your final course grade will be an F.

Makeup examinations will only be given for extenuating circumstances (e.g. hospital admission) or for verified, officially sanctioned university activities. All makeup examinations may be oral.

Regrading

Should you discover what you think is an error in grading your work, you have exactly one week after the grades are made available to you to request a regrade - no exceptions. 

To promote consistency of grading, questions and concerns about grading of labs or assignments should be addressed first to the TA and then, if that does not resolve the issue, to the instructor. 

You are welcome to contact the TA by email or come to their office hours. If you would like to speak with the TA in person and have a schedule conflict with their office hours, you are welcome to make an appointment to meet the TA at another time. 

For the final exam, there will be a special office hour designated to resolve any grade queries or disputes. This will be announced after the final exam. The final exam papers will not be returned.

Discussion Forum

We will be using Campuswire for their discussion forum, where you can post questions and get answers from TAs, the professor, and classmates.

You can access the discussion forum by going to the “Class Feed” link when you are logged into Campuswire. You will receive an invite after the course begins to join Campuswire.

Everyone is expected to:

1.     Use this discussion forum responsibly and maintain a friendly and helpful atmosphere at all times

2.     Not use this discussion forum for non-course related issues or discussions

3.     Do not publicly post more than a few lines of source code from an attempt at a homework problem. Do not post the solution to a homework problem or a link to a website containing the solution. For more extensive help reviewing or debugging code, you should visit office hours.

Tentative Weekly Class Schedule

The following tentative course schedule provides topics, problem sets, quiz dates, and exam dates. Check back frequently.

Date

Activity

Topics

Readings

Course Material

Mon, Feb 22, 2021

Lecture

Course Introduction

Fill out survey

 

Slides

Tue, Feb 23, 2021

Lecture

History of Computers, Computational Thinking

Conery: Chapter 1

Slides

Thu, Feb 25, 2021

Lecture

Python Install & Introduction to Python + Computer Programming Fundamentals

Installing Python

 

Computer Programming Fundamentals Slides

 

Example Programs

 

Colab: Arithmetic Module – to open a Colab file, click on the link and then choose "Open with Google Colaboratory" (you must be logged into SBU email to access)

Mon, Mar 1, 2021

[No Class]

 

Tue, Mar 2, 2021

Lab

Lab1 [Due Mar 4]

Thu, Mar 4, 2021

Lecture

Computer Programming Fundamentals

Conery: Chapter 2

 

Assignment 1 [Due Mar 11]

 

Colab: Variables Module

 

Extra Practice (not graded)

Mon, Mar 8, 2021

Lab

Lab2 [Due Mar 9]

 

Colab: Dealing with Errors

Colab: Modules and Functions

Tue, Mar 9, 2021

Lecture

Computer Programming Fundamentals (continued)

 

Thu, Mar 11, 2021

Lecture

Iteration, List, and Algorithm Design

Conery: Chapter 3

 

Assignment 2 [Due Mar 18]

 

Slides

 

Example Programs

 

Colab: if statements

Mon, Mar 15, 2021

Lab

Lab3 [Due Mar 16]

Tue, Mar 16, 2021

Lecture

Iteration, List, and Algorithm Design (continued)

 

Thu, Mar 18, 2021

Lecture

Iteration, List, and Algorithm Design (continued)

Prior Quiz Example

Mon, Mar 22, 2021

Lab

Quiz 1

 

Tue, Mar 23, 2021

Lecture

Searching and sorting. Scalability

Conery: Chapter 4

Slides

 

Example Programs

 

Assignment 3 [Due Apr 1]

Thu, Mar 25, 2021

Lecture

Searching and sorting. Scalability (continued)

 

Mon, Mar 29, 2021

Lab

Lab4 [Due Mar 30]

Tue, Mar 30, 2021

Lecture

Searching and sorting. Scalability (continued) + Understanding Lists

Tagliaferri: Understanding Lists

 

Thu, Apr 1, 2021

Lecture

Online Privacy

Slides

Mon, Apr 5, 2021

Lecture

Quiz 2

Assignment 4 [Due Apr 15]

Tue, Apr 6, 2021

Lab

Lab5 [Due Apr 8]

Thu, Apr 8, 2021

Lecture

Divide and conquer algorithms. Recursion

Conery: Chapter 5

Slides

 

Example Programs

Mon, Apr 12, 2021

Lab

Lab6 [Ungraded]

Tue, Apr 13, 2021

Lecture

Divide and conquer algorithms. Recursion (continued)

 

Thu, Apr 15, 2021

Lecture

Divide and conquer algorithms. Recursion (continued)

Fill out mid-semester survey

Mon, Apr 19, 2021

Lecture

Quiz 3

Assignment 5 [Due Apr 29]

Tue, Apr 20, 2021

Lab

Lab7 [Due April 22]

Thu, Apr 22, 2021

Lecture

Machine learning and string manipulation

Conery: Chapter 6

Slides

 

Example Programs

Mon, Apr 26, 2021

Lab

Lab8 [Due April 28]

Tue, Apr 27, 2021

Lecture

Machine learning and string manipulation (continued)

 

Thu, Apr 29, 2021

Lecture

Random numbers and object-oriented programming

Conery: Chapter 7

Slides

 

Example Programs

Mon, May 3, 2021

Lab

Quiz 4

Assignment 6 [Due May 13]

Tue, May 4, 2021

[No Class]

 

Thu, May 6, 2021

[No Class]

 

Mon, May 10, 2021

Lecture  

Random numbers and object-oriented programming (continued)

 

Tue, May 11, 2021

Lab

 

Lab9 [Due May 12]

Thu, May 13, 2021

Lecture

Data representation and compression

Conery: Chapter 8

Slides

 

Example Programs

Mon, May 17, 2021

Lab

Quiz 5

Lab10 [Due May 20]

Tue, May 18, 2021

Lecture

Lab + Data representation and compression (continued)

Assignment 7 [Due May 27]

Thu, May 20, 2021

Lecture

Data representation and compression (continued)

 

Mon, May 24, 2021

Lab

Lab11 [Due May 26]

Tue, May 25, 2021

Lecture

Natural language processing and regular expressions

Conery: Chapter 10

Slides

 

Example Programs

Thu, May 27, 2021

Lecture

Natural language processing and regular expressions (continued)

 

Mon, May 31, 2021

Lecture

Quiz 6

 

Tue, Jun 1, 2021

Lab

Lab12 [Due June 3]

Thu, Jun 3, 2021

Lecture

Final Exam Review

Slides

 

Mon, Jun 7, 2021

[No Class - Wednesday schedule]

 

 

 

Thu, June 17, 2021

Final Exam @ 3:15-5:45 pm

 

 

 

Labwork and Programming Assignments

All of the programming that you do in this course will be in Python, primarily using the Visual Studio Code programming environment. 

Python and Visual Studio Code are free for you to install on your computer. If you don't have a computer of your own to use, please let me know as soon as possible.

Programming assignments must be turned in via Blackboard on the day they are due. If your assignment is incomplete or is not working by the due date, turn in whatever you have. Due to limited resources for grading, programs which do not compile or run for testing may not be graded. Late submissions are only accepted in extenuating circumstances.

Academic Integrity: Cooperation vs Cheating

Working with others on assignments is a good way to learn the material and we encourage it. However, there are limits to the degree of cooperation that we will permit.

When working on programming assignments, you must work only with others whose understanding of the material is approximately equal to yours. In this situation, working together to find a good approach for solving a programming problem is cooperation; listening while someone dictates a solution is cheating. You must limit collaboration to a high-level discussion of solution strategies, and stop short of actually writing down a group answer. Anything that you hand in, whether it is a written problem or a computer program, must be written in your own words. If you base your solution on any other written solution, you are cheating.

It is okay to help other students, within limits. If you are asked for help by another student, two things that are absolutely forbidden are to show that student your solution or to put your hands on that student's keyboard or paper. That isn't helping; that is facilitating cheating! Instead answer questions, give tips, help with tools, explain Python, point out a bug, and/or give encouragement. In other words, interact with other students the way that the TAs do.

When taking an exam, you must work completely independently of everyone else. Any collaboration here, of course, is cheating.

We do not distinguish between cheaters who copy others' work and cheaters who allow their work to be copied.

If you cheat, you will be referred to the appropriate office at the University. If you have any questions about what constitutes cheating, please ask.

The statement from the university on academic integrity is: Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty members are required to report any suspected instances of academic dishonesty to the Academic Judiciary Committee or the Department of Academic Affairs, Campus Building A, Room 201, (032) 626-1121.

Students with Disabilities

If you have a physical, psychological, medical or learning disability that may impact your course work, please contact the Department of Student Affairs, Campus Building A, Room 207, (032) 626-1190. They will determine with you what accommodations, if any, are necessary and appropriate. All information and documentation is confidential. 

Critical Incident Management

SUNY Korea expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Department of Academic Affairs any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn.

Classroom Mask Policy

Everyone participating in this class during in-person sessions must wear a mask or face covering at all times or have the appropriate documentation for medical exemption. Any student not in compliance with this policy will be asked to leave the classroom. If students need to drink or eat, they should step out of the classroom to do so.