Error control coding plays an important role in many scientific disciplines and virtually all telecommunication systems. In practice, codes are used to efficiently insure reliable, secure, and private transmission and storage of information. In theory, codes are used to e.g., study computational complexity, design screening experiments, provide a bridge between statistical mechanics and information theory, and even help understand the spacetime fabric of reality. One can also use codes for entertainment, e.g., to solve balance puzzles such as the penny weighing problem, or to design social (hat color) guessing-game strategies that significantly increase the odds of wining. Learning Objective: The students will learn the fundamentals of coding theory and practice, as well as a selected number of more advanced topics of their individual research interests. Instructor: Emina Soljanin emina.soljanin@rutgers.edu Office hours: Tuesday 3:20 PM 4:40 PM or by appointment, CoRE 511, 848-445-5256. Class time and place: M&W, 3:20 PM 4:40 PM, SEC-202. Prerequisites: probability and algebra at undergraduate level. Grading: homework 10%, 2 midterm exams 25% each, final project 40%. (Exams will be in class, late February and early April.) Text: Error Control Coding (2nd Edition) by Lin and Costello Course outline: Fundamental concepts through examples. Linear block codes, Ch. 27 Convolutional codes, Ch. 11&12. Turbo codes, Ch. 16. LDPC codes, Ch. 17. Hybrid ARQ, Ch. 22. Network, rateless, storage, polar, and spatially-coupled codes coding theory in other scientific disciplines The extent to which these topics will be covered will vary in accordance with the backgrounds and research needs of the students in the class.