|
|
|
|
|
linguist.page@gmail.com
Home
»
Computational Linguistics
»
Programming
Programming Concepts (Language-Agnostic)
(14)
What is a program?
Source code vs. compiled code vs. interpreted code
Variables & data types
Operators
Control flow (if/else, switch)
Loops (for, while, do-while)
Functions / procedures
Scope & lifetime of variables
Recursion
Stack vs. Heap memory
Pointers & references (conceptually)
Error handling & exceptions
Debugging basics
Comments & documentation
Python (Primary Language for NLP)
(41)
Python Basics
(15)
Installation & environment setup
Python interpreter
Variables & dynamic typing
Data types: int, float, str, bool, None
String operations & formatting (f-strings)
Lists, Tuples, Sets, Dictionaries
List comprehensions
Slicing
Functions (def, return, *args, **kwargs)
Lambda functions
Built-in functions (map, filter, zip, enumerate, sorted)
Modules & imports
File I/O (open, read, write, with statement)
Exception handling (try, except, finally)
Iterators & generators
Intermediate Python
(15)
Classes & objects
Attributes & methods
Constructors (__init__)
Inheritance
Polymorphism
Encapsulation
Magic/dunder methods
Decorators
Context managers
Regular expressions (re module)
Functional programming concepts
Comprehensions (dict, set)
Type hints
Virtual environments (venv, conda)
Package management (pip)
Python for Data & NLP
(11)
NumPy (arrays, broadcasting, vectorized ops)
Pandas (DataFrames, Series, data manipulation)
Matplotlib & Seaborn (visualization)
Scikit-learn (ML pipeline, feature extraction)
NLTK (classic NLP toolkit)
spaCy (industrial NLP)
Gensim (topic modeling, word vectors)
Hugging Face Transformers (modern NLP)
PyTorch (deep learning framework)
TensorFlow / Keras (alternative deep learning)
Jupyter Notebooks
Data Structures
(8)
Arrays
Linked lists
Stacks
Queues
Hash tables / Dictionaries
Trees (binary, BST, trie)
Graphs (adjacency list, adjacency matrix)
Heaps
Algorithms
(13)
Time complexity (Big-O notation)
Space complexity
Searching (linear, binary)
Sorting (bubble, merge, quicksort)
Recursion & divide and conquer
Dynamic programming
Greedy algorithms
Graph traversal (BFS, DFS)
String matching (Naive, KMP, Boyer-Moore)
Edit distance / Levenshtein distance
Longest Common Subsequence
Viterbi algorithm
CYK / Earley parsing algorithms
Version Control
(6)
What is version control?
Git basics (init, add, commit, push, pull)
Branching & merging
GitHub / GitLab
.gitignore
Collaborative workflows
Software Engineering Basics
(7)
Modular programming
Writing clean, readable code
Unit testing (pytest)
Documentation (docstrings)
Working with APIs
JSON parsing
Configuration files