CSCI 1100 - Lecture 1

Chapter One Lecture 1 — Introduction

1.1 People

  • Instructors:

    • Uzma Mushtaque

    • Neha Keshan

    • Mark R Gilder

  • Instructional Support Coordinator:

    • Shianne Hulbert

  • TAs and Programming Mentors:

    • Check course website for detailed information regarding their roles and availability.

1.2 Learning Outcomes

By the end of this course, students will be able to:

  • Demonstrate proficiency in basic programming constructs.

    • Understand and utilize variables, data types, control structures, functions, and error handling.

  • Design algorithms and programs for small-scale computational problems.

    • Apply problem-solving strategies to develop efficient algorithms tailored to specific tasks.

  • Write, test, and debug small-scale programs.

    • Implement testing strategies and utilize debugging tools to refine and troubleshoot code.

  • Understand the application of computational thinking in the real world.

    • Recognize how algorithmic thinking can address complex issues across different domains.

  • Identify biases impacting higher education and computational systems design.

    • Analyze how biases can affect algorithmic outcomes and educational processes, emphasizing equity in technology.

  • Integrate social and ethical awareness into programming and problem-solving.

    • Reflect on ethical dilemmas in technology usage and programming decisions.

1.3 Textbook

  • Title: Practical Programming: An Introduction to Computer Science Using Python

  • Authors: Campbell, Gries, and Montojo

  • Availability: E-book format available; second edition is highly recommended for most current content, although the third edition is acceptable as well.

  • Supplementary Resources: Check the textbook’s official website and companion materials for additional exercises and resources.

1.4 Website and Online Resources

  • Course notes and lecture exercises: Accessible at the CS1100 Course Website.

  • Discussion Forums: Engage with peers and instructors via the online discussion board to clarify concepts and collaborate on projects.

1.5 Course Logistics

  • Homework and Labs:

    • Managed through Submitty, an online platform for maintaining course assignments and tracking submissions.

    • Automatic enrollment upon registration; if you encounter issues accessing, notify instructors immediately.

  • Office Hours:

    • Dr. Uzma: Mon 10:00 am - 11:30 am, Thurs 10:00 am - 11:30 am (AE 111)

    • Dr. Keshan: Mon 12:00 pm - 1:30 pm, Thurs 12:00 pm - 1:30 pm (AE 205)

    • Dr. Gilder: Mon 3:30 pm - 5:00 pm, Thurs 3:30 pm - 5:00 pm (AE 123)

  • Lab Sections:

    • Held on Tuesdays and Wednesdays; attendance is mandatory to receive full credit. Participation in labs enhances understanding of practical applications.

  • Grading:

    • Based on performance in lecture exercises, labs, assignments, tests; grades issued as letter grades for clarity in assessment.

  • Late Policy:

    • Students are allowed 3 late days throughout the semester; however, a maximum of 2 late days can be used on one single assignment.

  • Academic Integrity:

    • A zero-tolerance policy for academic dishonesty; students are expected to adhere to the institution's integrity guidelines.

1.6 Lab Information

  • Lab 0:

    • Focused on software installation, scheduled for the third week of the course.

    • Optional Installation Session: Will take place on August 29 at DCC 308 for students needing assistance.

  • Test Dates:

    • Scheduled for October 3, October 31, and November 21 from 6:00 pm to 8:00 pm.

    • Ensure to manage study time effectively before each date to prepare thoroughly.

  • Final Exam:

    • No exceptions will be made for scheduling conflicts; plan accordingly.

1.7 Programming Overview

  • The Magic of Programming:

    • Emphasizes the relationship between logic and syntax, fostering creativity in problem-solving.

  • Types of Problems Addressed:

    • Covers a diverse range of applications: tools for "Words with Friends", image processing, web crawling for data extraction, data manipulation techniques, numerical games, and simulations—all including a simple example related to Pokémon Go to engage students in real-world applications.

1.8 First Program: Hello World

  • Creating the Program:

    • Instructions to create a text file hello.py containing the lines:

    print('Hello, World!')
    print('This is Python')
  • IDE Overview:

    • Utilize the Spyder IDE, which provides both an editor and interpreter window, making it user-friendly for writing and executing Python code.

    • Code can be executed directly within the interpreter for immediate feedback.

1.9 Exploring Computational Thinking

  • Introduce a problem presented in Think Python:"Find the one word in the English language that contains three consecutive double letters."

  • Steps for Solving the Problem:

    • Understand the problem through concrete examples and clarifications.

    • Develop a step-by-step algorithm to reach the solution, considering various approaches.

    • Translate the developed algorithm into executable Python code.

    • Execute the program and refine based on output results.

  • Key Elements Covered:

    • Focus on files, functions, loops, logic structures, counting methods, output techniques, and libraries available in Python.

1.10 Programming Fundamentals

  • Programs vs Compilers:

    • Python is classified as an interpreted language; this characteristic contrasts with compiled languages such as C/C++ that necessitate a distinct compilation phase.

    • Both programming categories depend on multiple systems including the file system and the operating system to function properly.

  • Abstraction:

    • A fundamental concept that enables programmers to concentrate on problem-solving aspects without becoming overwhelmed by underlying complexities, promoting clarity and efficiency in programming.

1.12 Why Python?

  • Advantages of Python:

    • Noted for its simple and readable syntax, alongside providing immediate feedback as an interpreted language, making it an ideal choice for beginners.

    • Home to powerful tools conducive to rapid prototyping, it's widely utilized across various fields—from web development to data science.

  • Error Identification:

    • Syntax Error: Refers to a structural mistake in the code that halts execution entirely.

    • Semantic Error: Happens when the code runs but produces incorrect results due to logical flaws; these miscalculations require careful debugging. Demonstrations of both error cases will be provided throughout the course.

1.14 Python Versions

  • Continuous development of Python stresses the importance of utilizing the latest version, which can be accessed through conda for ongoing improvements and features.

1.15 Lab 0 Objectives

  • Familiarize yourself with the Submitty platform and explore available forums and resources to enhance learning.

  • Install the Python development environment compatible with your operating system (Windows, Mac OS X, or Linux).

  • Create a Dropbox account for backing up all homework and lab solutions, which is a required step to safeguard academic work.

  • Warning against the use of GitHub/GitLab for coursework submissions due to potential academic integrity violations, prioritizing secure and compliant submission methods.