0% found this document useful (0 votes)
12 views10 pages

Intro to Computer Science Lecture Notes

Uploaded by

eugenebobrovmeow
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views10 pages

Intro to Computer Science Lecture Notes

Uploaded by

eugenebobrovmeow
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Class Notes – Introduction to Computer Science

Lecture 1 – Foundations of Computing

Definition: Computer Science is the study of computation, automation, and information.


We discussed what constitutes a computer: hardware, software, and the interface between them.
A major point was understanding that computing is not just programming; it involves theory,
abstraction, and application.

Key Topics:
- Binary representation and data encoding
- Logic gates and Boolean algebra
- Basic hardware architecture: CPU, memory, I/O devices

Notes:
– Professor emphasized the importance of abstraction in problem solving.
– Students practiced converting decimal to binary and vice versa.
– Homework: Read Chapter 1, exercise 1–10.
Lecture 2 – Programming Fundamentals

Overview of programming paradigms: procedural, object-oriented, and functional.


We examined how algorithms translate into programs and why code readability matters.

Concepts Covered:
- Variables and data types
- Conditional statements and loops
- Functions and modularity

Example Exercise:
Write a program that computes the factorial of a number iteratively and recursively.
Compare performance and stack behavior for large n.

Discussion Points:
– Importance of indentation and style guides (PEP 8 for Python).
– Why recursion is elegant but not always efficient.
Lecture 3 – Algorithms and Data Structures

This lecture covered the relationship between algorithms and data structures.
We analyzed the concept of complexity using Big O notation and explored trade-offs
between time and space efficiency.

Key Structures:
- Arrays and linked lists
- Stacks and queues
- Trees and graphs

Examples:
– Searching: linear vs binary
– Sorting: selection, insertion, merge, and quicksort

Homework:
1. Implement a stack using both arrays and linked lists.
2. Write functions for depth-first and breadth-first traversal.
Lecture 4 – Object-Oriented Design

Core Principles of OOP:


1. Encapsulation – bundling data and methods.
2. Inheritance – reusing code through hierarchies.
3. Polymorphism – defining common interfaces.
4. Abstraction – hiding implementation details.

Example discussed: A class hierarchy for geometric shapes (Circle, Rectangle, Triangle).
We implemented constructors, destructors, and virtual methods in C++.

Discussion:
– The professor stressed design over syntax.
– Students debated between composition and inheritance for real-world modeling.
Lecture 5 – Databases and Persistence

We introduced databases as systems for storing and organizing data efficiently.


The relational model was compared to NoSQL alternatives.

Topics:
- Tables, keys, and relationships
- SQL basics: SELECT, INSERT, UPDATE, DELETE
- Transactions and ACID properties
- Indexing and normalization

Notes:
– Practical lab used SQLite.
– Discussion of consistency models in distributed databases.
Lecture 6 – Networks and the Internet

This session focused on how computers communicate.


We studied the OSI model and TCP/IP stack.

Layers discussed:
1. Physical
2. Data Link
3. Network
4. Transport
5. Application

Examples:
– HTTP, DNS, and IP addressing.
– How routing and packet transmission occur.

Homework:
Trace a packet using Wireshark and describe each protocol layer.
Lecture 7 – Operating Systems Overview

Definition: An operating system is a software layer that manages hardware resources


and provides services for applications.

Topics:
- Process scheduling
- Memory management
- File systems and device drivers

Lab:
Students created simple shell scripts to automate file operations.
Lecture 8 – Software Engineering Principles

Focus on methodologies and design thinking.


We compared Agile and Waterfall approaches and introduced version control (Git).

Topics:
– Requirements gathering and system modeling
– Testing and CI/CD concepts
– Documentation and maintainability

Notes:
– The professor demonstrated git branching strategies.
– Students practiced writing unit tests.
Lecture 9 – Artificial Intelligence and Machine Learning

AI is a broad field aiming to make machines capable of performing tasks that require intelligence.
We introduced supervised and unsupervised learning paradigms.

Topics:
- Neural networks and perceptrons
- Gradient descent
- Overfitting and regularization

Discussion:
– Ethical implications of AI in society.
– The importance of data quality.
Lecture 10 – Review and Final Discussion

Summary of key topics throughout the semester:


– Algorithms, Data Structures, OOP, Databases, Networks, OS, AI.

Advice for exam preparation:


1. Review all lecture notes.
2. Focus on understanding rather than memorization.
3. Practice algorithm analysis with real examples.

Final remarks from the professor:


“Computer Science is about problem-solving. Tools change, principles remain.”

You might also like