Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
wtolley authored Sep 6, 2024
1 parent 05a6606 commit 89158c2
Show file tree
Hide file tree
Showing 2 changed files with 302 additions and 0 deletions.
302 changes: 302 additions & 0 deletions CSCI111-Lecture1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,302 @@
---
theme: seriph
background: https://cover.sli.dev
class: 'text-center'
highlighter: shiki
info: |
## CSCI 111: Introduction to Computer Science
Learn more at [Sli.dev](https://sli.dev)
transition: slide-left
title: "CSCI 111: Introduction to Computer Science"
mdc: true
---

# CSCI 111: Introduction to Computer Science

---

# Administravia

---

# Instructor and Course Information

<br>

- **Instructor:** William J. Tolley
- **Office:** Parmly 413B
- **Email:** [email protected]
- **Lecture Times:** Monday and Wednesday 8:00 - 9:30 AM
- **Lab Time:** Friday 8:00 - 11:00 AM

---

# Teaching Assistants

<br>

- **Payton Crawford**
- **Micah Tongen**

<br>

---

# Evening Help Schedule

<br>

| | 6pm – 7pm | 7pm – 8pm | 8pm – 9pm |
|-----------|----------------|----------------|----------------|
| **Sunday** | Saad, Janeet, Lakpa | Saad, Janeet, Lakpa | Janeet, Lakpa |
| **Monday** | Mohamed, Evan, Connor | Mohamed, Evan, Connor | Mohamed, Evan |
| **Tuesday** | Kidus, Elias | Kidus, Elias | Kidus |
| **Wednesday** | Han, Ngoc-Anh | Han, Ngoc-Anh | Lakpa |
| **Thursday** | Sanjog, Evan | Sanjog, Evan | Evan |


---

# Introductions

---

## Background

- **Hometown**: Chuckey, Tennessee
- **Education**:
- Bachelor's in **Philosophy** and **Computer Science** from **Berea College**
- Graduate studies at **University of New Mexico**, **UC Berkeley**, and **Arizona State University**

## Personal Life & Interests

- **Family**: I'm married and have a daughter, two cats, and a bunny
- **Hobbies**: Reading, backpacking, camping, hunting, and making music

## Favorites

- **Books**: *Neuromancer* and *Shogun*
- **Movie**: *O Brother, Where Art Thou?*
- **Music**: **black metal**, **thrash**, **bluegrass**, and **90s neotraditional country**

---

# Who are you?

---


# What You’ll Learn

<br>

- How to think like a computer scientist
- Designing and implementing algorithms
- Fundamentals of Python programming
- Problem-solving techniques and debugging
- Using Linux for development
- Introduction to computing systems and logic

---

# What Is Computer Science?

---

# What is Science?

---

# What is Science?

- **Karl Popper**: Science advances through **falsifiability**, where a hypothesis must be testable and capable of being proven wrong.
- **Thomas Kuhn**: Science progresses through **paradigm shifts**, not linear accumulation of knowledge.
- **Paul Feyerabend**: There’s no single **scientific method**; “anything goes” in the advancement of knowledge.

Is computer science **falsifiable**, **progressive**, or **revolutionary**?

---

# What is Computing?

---

# What is Computing?

- **Claude Shannon**: Defined computing as the processing and transmission of information, laying the foundation for **information theory**.
- Is **computing** something humans do, or is it intrinsic to machines?
- How do **algorithms** fit into this?

---

# What is a Computer?

---

# What is a Computer?

- **Turing Machine**: A mathematical abstraction that helps define computation.
- **Physical Computers**: Machines that perform computations following **predefined rules**.

Does a **computer** have to be a machine?

---

# Is Computer Science a Science?

---

# Is Computer Science a Science?

- **Karl Popper**: Does computer science follow the same principles as **falsifiability** in natural sciences?
- **Kuhn’s Paradigms**: Has computer science had **paradigm shifts**, or is it still evolving within a single framework?
- **Feyerabend’s Anarchy**: Is the structure of computer science methodologically diverse enough to be considered scientific?

---

# Thinking Outside the Box

---

# Thinking Outside the Box

- Are we **creating knowledge** in computer science or simply creating **tools**?
- Can computers **discover** things, or are they always bound by human-made rules?
- What happens when **technology** drives the direction of "science"?
---

# Applications of Computer Science

<br>

- Powers everything from mobile apps to self-driving cars
- Enables new fads like **AI**, **machine learning**, and **blockchain**
- Crucial in **healthcare**, **finance**, **entertainment**, and more
- Careers in cybersecurity, software development, research, etc.

---

# Connections to Philosophy, Logic, and Math

<br>

- **Philosophy**: What can computers "know"? Ethical considerations in AI and machine learning
- **Logic**: The foundation of algorithms and computational processes
- **Mathematics**: Discrete math, probability, and calculus in problem-solving and analysis

---

# Introduction to Linux

---

# Why Linux?

<br>

- Linux is widely used in programming, especially for servers, cloud computing, and software development
- It’s open-source, customizable, and free
- Learning Linux will make you comfortable with many development environments

---

# Basic Linux Commands

<br>

- `ls`: List files in the current directory
- `pwd`: Show the current directory
- `cd`: Change the current directory
- `mkdir`: Create a new directory
- `rm`: Remove files or directories
- `cp`: Copy files or directories
- `mv`: Move or rename files
- `cat`: Display the contents of a file
- `grep`: Search for specific patterns or keywords in files
- `find`: Search for files and directories
- `head`/`tail`: View the beginning or end of a file
- `nano` or `vim`: Edit text files

---

# Practical Linux Use Cases

<br>

- **Programming**: Running scripts, compiling code, debugging
- **System Administration**: Managing files, processes, and services
- **Cybersecurity**: Network security tools, penetration testing

---

# Introduction to Python

---

# Why Python?

<br>

- **Easy to Learn**: Simple syntax, great for beginners
- **Versatile**: Used for web development, data science, AI, automation, etc.
- **Extensive Libraries**: Python has libraries for almost every task, from machine learning (e.g., TensorFlow) to web development (e.g., Django)
- **Growing Popularity**: One of the most in-demand programming languages

---

# Python in the Real World

<br>

- **Web Development**: Building websites and APIs (e.g., Instagram, Reddit)
- **Data Science & Machine Learning**: Analyze large datasets, build AI models (e.g., Netflix recommendations, Google search)
- **Automation**: Automate repetitive tasks like file management or web scraping
- **Cybersecurity**: Write scripts to automate penetration testing and security checks

---

# Whodunit

---

# Command Line Murder Mystery

<br>

- We’re going to solve a fun mystery using Linux commands!
- Navigate files and directories, and uncover clues to solve the crime
- This interactive activity will teach you key Linux commands and file system navigation

---

# Steps for the Murder Mystery

1. Use `ls` and `cd` to navigate the file system.
2. Open files with `cat` or `nano` to read clues.
3. Use commands like `grep` to search through files.
4. Work together in small groups and solve the mystery!

---


# What We Covered Today

<br>

- Introductions and course overview
- Why computer science matters in the real world
- Basic Linux commands
- Introduction to Python and its applications
- Command Line Murder Mystery hands-on activity

---

# For Next Class

<br>

- Practice Linux commands we learned today
- Set up Python on your machine if you haven’t already
- Submit your process for solving the murder mystery and your suspect.

Binary file added CSCI111-Lecture1.pdf
Binary file not shown.

0 comments on commit 89158c2

Please sign in to comment.