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) Tuesday 5 – 9:10 PM Thursday 5 – 9:00 PM Kakao: syj0704 Zoom:https://stonybrook.zoom.us/j/9897910184?pwd=MVcyVk1PS0EyS29lbDdVSmwxV0NlQT09 |
Daniiar
Zholmatov (Tutoring) Tuesday 8 – 11:30 PM Thursday 7 - Midnight Kakao: zholmatov00 Zoom:https://stonybrook.zoom.us/my/zholmatov?pwd=MXhpR0J1cUpGNmd0aVlBRklQeVZYdz09 |
Roshan Poudel (Tutoring) 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) Monday 7 – 8:30 PM |
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
|
|
Tue, Feb 23, 2021 |
Lecture |
History of Computers, Computational Thinking |
Conery: Chapter 1 |
|
Thu, Feb 25, 2021 |
Lecture |
Python Install & Introduction to Python + Computer Programming Fundamentals |
Computer Programming Fundamentals Slides
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]
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) |
||
Mon, Mar 22, 2021 |
Lab |
Quiz 1 |
|
|
Tue, Mar 23, 2021 |
Lecture |
Searching and sorting. Scalability |
Conery: Chapter 4 |
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 |
||
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
|
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.