OIM3640 - Problem Solving and Software Design

contain

Agenda

  • Introducing yourself
  • Introduction to the course
    • Syllabus
    • Software
  • How to learn programming?
  • Writing your first Python program! (if time permits)

Welcome! How are you doing?

Please introduce yourself, including:

  • Who are you? Where did you come from?
  • Which year are you in? What's your best moment at Babson so far?
  • What is your concentration? Are you going to rule the world with that?
  • Why did you decide to take this class?
  • Do you have any programming experience?
  • How was your 2024 and winter break? Did you do anything exciting or just binge on Netflix?
  • How can we remember you? Tell a fun fact or a boring fact about yourself.

About Me

  • Instructor: Zhi Li (李直)
  • Email: zli@babson.edu
  • Office Hours (Babson Hall 216D):
    • Tuesday: 11:30AM - 12:30PM
    • Thursday: 2:00PM - 3:00PM
    • Online via Webex: by appointment
    • Read: What are office hours?
  • I will send an email after each class, including:
    • Summary of the class
    • Exercise/Homework Due
    • Recommendations

A Quick Survey (on Slido.com #3640)

  1. What programming languages have you used or heard of?
  2. What text editors or IDEs have you used for coding?
  3. Have you used Git/GitHub before?
  4. Have you created any websites before?
  5. How often do you use ChatGPT (or other GenAI tools) for learning purposes?
  6. What is your main goal in learning Python?
  7. What other technologies are you interested in learning?

What is this course about?

Well, let me first tell you that this course is NOT about...

  • Computer science theories
  • Data structures and algorithms
  • Front-end technologies / website design
  • Game development and graphics programming
  • Scientific computing, big data and data visualization
  • Advanced libraries such as pytorch for deep learning
  • Distributed systems, cloud computing and microservices

Seriously, what is this course about?

  • Variables, expressions, statements
  • Basic data types (e.g., integers, strings, lists, dictionaries)
  • Control structures (e.g., loops, if-else statements, for/while loops)
  • Functions and modules
  • File Input/Output (I/O)
  • Basic Object-Oriented Programming (OOP) concepts
  • Exception handling
  • Basic built-in and third-party libraries
  • Database and SQLite
  • Text analysis
  • Web scraping
  • Popular web frameworks (Flask / FastAPI)
  • Basic problem solving strategies
  • Debugging and testing
  • Version control and collaboration
  • Working with APIs (e.g., OpenAI API)
  • ...

What really matters are ...

  • Getting comfortable with the basics of programming
  • Learning to think like a software engineer and a computer scientist
  • Figuring out how to learn programming and how to get "unstuck"
  • Collaborating with engineers and other team members by using the right tools and communicating clearly
  • Equipping you with tools and mindset to succeed even after this course is over
  • Leveraging GenAI effectively for ideation, debugging, and enhancing productivity

What ultimately matters in this course is not so much where you end up relative to your classmates, but where you end up relative to yourself when you begin.

Syllabus

  • Course Description and Learning Objectives
  • Prerequisites
  • Software (next slide)
  • Exercises / Assignments / Exam
  • Final Project (will be introduced in detail later)
  • Grading Scheme
  • Course Policies

Software

  • Python
    • "Add python.exe to PATH"
  • Visual Studio Code (VSCode), and extensions
    • Python
    • vscode-icons
  • GitHub Desktop
    • Sign up for GitHub (with your Babson email and remember your password.)

How to Learn (Python) Programming?

Python is ...simple and elegant!

... but programming is hard, like, really hard!

DO NOT take the “couch potato” approach

Practice!

Practice!

Practice!

DO NOT copy and paste!

Ask Questions

Ask Questions the Smart Way

DO NOT panic!

  • Almost everyone hits a rough patch in the course at some point.
  • Don't let it discourage you.
  • It's normal!

What if you got "stuck"

  • Take a break
  • Break the problem down
  • Keep trying
  • Debug
  • Ask for help

More on Learning to Code

  • People who are new to programming don't know what it's like to be a programmer or take a programming course.
  • Having unrealistic expectations, such as expecting things to work perfectly the first time, can easily lead to disappointment.
    • It's important not to give up at the first sign of an error.
  • Expect:
    • to spend hours, entire nights, even days getting things to work
    • to learn a lot by yourself.
  • The real learning happens when you encounter obstacles and overcome them.
  • Avoid relying on spoon-fed answers, as it can lead to weaker problem-solving skills in the long run.

How to Cheat without Being Caught

  • Cheating Tips (but seriously, don't):
    • Submitting code with the same md5sum as your friend's? Congratulations, you've both just failed together!
    • Sharing your code for "inspiration"? Now you're both in trouble.
    • Changing comments or adding spaces? Tokenization says otherwise.
    • Renaming variables or copying parts of code? Still detectable.
    • Copying code from internet or GenAI? If you don't understand it, I will know.
  • Pro Tip:
    • If you still decide to cheat, the only way to cheat safely is to actually do the work and learn something!

Collaboration Policy

  • For final projects and other specified group homework/projects, you may work in a team and submit a joint assignment.
    • It's important to review and follow the guidelines as it may vary per project.
    • You also have the option to work independently.
  • For individual work, sharing code with anyone is prohibited.
  • Forming study groups is encouraged.
    • However, you should not share your code with others.
  • To truly learn, make sure you independently write your own code.
  • Any violation of this policy will be addressed under the school's academic misconduct rules and may result in course failure

NOW, PREPARE TO GET YOUR HANDS DIRTY!

global styles