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.”