Parallel Computer Architecture

This course will mainly introduce computer organization and design, including the following topics: i) instruction-level parallelism, including parallel processing, superscalar, VILW, static instruction scheduling dynamic scheduling and precise exception handling, ii) memory-level parallelism, iii) data-level parallelism including multi-core architecture, GPU, iv) thread-level parallelism and v) NVM-level parallelism. This course is a project-centric; we will have five gem5 lab projects. Most projects are a step-by-step tutorial to teach you how you can do simulation-based architectural explorations and studies. It will include CPU design analysis, exploring different branch predictors, multi-threading on full-system mode evaluations, and SSD internal parallelism analysis on gem5. Considering undergraduate students, this course will also include quick review lectures, which will include, instruction set architecture, MIPS/RISC architecture, pipelining, hazard and cache architecture.

Topics

No.TitleTopics included
#1Overviews [ pdf ] [ ppsx ]Logitistics
#2Quick Review: Instruction Set Architecture [ pdf ]ISA, MIPS, RISC and RISC-V
#3Quick Review: MIPS Architecture [ pdf ]RTL, Combination Logic, Single Cycle Datapath, ALU Control Unit
#4Quick Review: Multi-cycle Machine and Pipelining [ pdf ]Multi-cycle machine, FSM, Pipeline Design and Pipeline Paradox
#5Quick Review: Hazards [ pdf ]Dependencies and Harzards, Data Forwarding, Pipeline Integration
#6Instruction-Level Parallel Processing [ pdf ]Superscalar, Deep pipelining, VLIW, Tracing, Loop Unrolling
#7Static Scheduling [ pdf ]Compiler Optimization, Register Renaming Software Pipelining
#8Dynamic Scheduling (Scoreboard) [ pdf ]Out-of-Order Execution, Scorebard Algorithm
#9Tomasulo Scheduling [ pdf ]Reservation Stations, Decentralized Buffers, Tomasulo Algorithm
#10Reorder Buffer [ pdf ]Register Renaming, Alias Table, Advanced RoB Processors
#11Precise Exception [ pdf ]Exception Handling, Speculative Executions, LSQ, Spectre/Meltdown
#12Branch Prediction [ pdf ]Branch History Tables, Correlated Prediction, Tournament, RAS
#13Cache [ pdf ]$ Basics, Practical/Approximate LRUs, UnCacheable Speculative WC
#14Virtual Memory [ pdf ]Virtual Memory, Page Tables, Multi-level Paging, MMU, TLB
#15Volatile Memory (DRAM) [ pdf Δ ]MAT, Bank/Rank, Channel, EDO, Burst EDO, DDR, LRDIMM, FBDIMM
#16Volatile Memory (Adavanced) [ pdf Δ ]Xn Prefetching, Clock Skew, Single-ended, Reflection
#17Volatile Memory (Adavanced) [ pdf Δ ]Scheduling, Multi-channel, Bank-level Parallelism, LPDDR, GDDR
#18Non-Volatile Memory (Practical Approach) [ pdf Δ ]PMEM, Persitence Support, DAX, FSDAX, DEVDAX, New Instrutions
#19Multicore with Coherence/Consistence [ pdf Δ ]MESI, MSI, MOESI, MESID, Director, Snooper, Multi-level $ issues

Check OTL Reviews (EE312)

Check OTL Reviews (EE312)
Introduction to Computer ArchitectureMyoungsoo Jung2022spring
1. 강의
강의력이 정말 엄청 좋으십니다.
이번학기 전프구랑 같이 들었는데 정명수 교수님 수업 덕분에 끝까지 완주할 수 있었습니다.
수업 시작한지 얼마 안되었을 때 교수님이 여기까지는 수업만 잘 따라왔으면 쉬울 거라는 말에 좌절했었는데 차근차근 강의 노트 되짚어가면서 공부하니까 이해할 수 있었습니다. 영어 이해하기 쉽게 얘기해주시고 강의노트가 한 렉쳐당 150장 내외로 짜이는데 엄청난 노력이 들어간 것 같아보였습니다. 또한 조교님께 엄청 많이 여쭤봤는데 주말에도 불구하고 자세하게 알려주셔서 감사했습니다. 수업시간에 강의 노트랑 비교해서 집중해서 잘 들으시길 추천합니다.

2. 과제
솔직히 많이 힘들었습니다. 한 과제과제 할 떄마다 맨날 드랍하고 싶었고 디버깅하느라 waveform 하루종일 보고 있으면 정신 나갈뻔했습니다. 그래도 수업시간에 제공하는 회로도 참고하고 여러 가지 자료 참고하면 어느정도 코드를 짤 수 있고 조교님께 여쭤보면 정말 친절하게 알려주십니다.

3. 학점
예상보다 훨씬훨씬 잘 주셨습니다. 기말고사만 보기 떄문에 내용이 좀 많아서 힘들 수 있는데 차근차근 하면 어느정도는 할 수 있는 것 같습니다. 그리고 교수님께서 시험전에 여기여기 보라고한 거 꼭 직접 해보십쇼... 과제 어느정도 만점부근으로 받고 그것만 100퍼센트로해도 A0이상 나올 것 같습니다.

한 학기 동안 재밌게 들었던 것 같습니다. 전자과라면 들어볼만하지 않나 싶습니다.
Introduction to Computer ArchitectureMyoungsoo Jung2022fall
강의력이 굉장히 좋으십니다. 영어를 잘 하시고 렉쳐노트도 굉장히 잘 만들어져 있습니다. 내용도 취향에만 맞는다면 정말 재밌고요. 과제는 컴구개에서 항상 나오는 것 그대로 나옵니다. 베릴로그에 대한 팁은 이미 많이 적혀 있으니 생략하고, 개인적으로 노베이스 상태에서 전프구 들었을 때보다는 덜 힘들었습니다. 물론 베릴로그같은 하드웨어 언어와 C는 완전히 장르가 달라서 비교하기 어렵긴 하지만요. 전프구에서 코드를 완성하기까지 오래 걸렸다면 컴구개에선 디버깅에 대부분의 시간이 들어갔습니다. 성적은 각오했던 것보다 너무 좋게 주셔서 양심의 가책이 느껴질 정도입니다. 시험은 기말고사만 있었고 성적 비중은 출석:기말:과제=5:30:65였습니다.

로드가 좀 빡센 수업인건 맞지만 개인적으로 전자과라면 한번 듣고 나가길 추천하는 과목입니다. 이번이 졸업학기였는데 재미로만 따지면 지금까지 들었던 전자과 수업 중 세 손가락 안에 듭니다.


Operating Systems

The purpose of this course is to teach the general concepts and principles behind operating systems. The topic we will cover through this class, including i) kernel and process abstractions and programming, ii) scheduling and synchronization, iii) memory management and address translation, iv) caching and virtual memory v) file systems, storage devices, files and reliability, vi) full and para-virtualization. In addition to these lectures, we will also have term projects, which use an operating system simulator/emulator built for an educational purpose. In these projects, we expect that you not only can learn Linux practices but also make great strides in studies on operating systems design and implementation. This is in C/C++, rather than Java or Python. We believe that these projects will provide a more realistic experience in operating systems to students. In this class, all homeworks are treated in an individual assignment; whereas projects are considered as a group assignment. In typical, it is difficult to figure out the contributions that each member committed, the submission for these projects will be done through a git repository per group (e.g., bitbucket), and TA will check all push and pull transactions to grade a team. Note that, in this sense, Intermediate pushes will help TA see how students are progressing. The project teams may be two persons, some may be threes; the number of students per team will be decided based on information of the final registration, and will be announced in classes.

Topics

No.TitleTopics included
#1Logistics 
#2Overviews 
#3Hadware managementOS history, architecture and hardware supports, I/O ports, memory mapped I/O, DMA, typical memory layout and a bootup sequence example
#4ProcessesMultiprogramming, execution stack, address spaces, context switch, process creation, inter-process communication
#5ThreadsLight-weight processes, thread State, lifecycle of a thread, dispatch Loop, evennts, interrupts, thread execution
#6Concurrency managementUNIX process management, process tree, fork(), exec(), pthread, join(), OpenMP
#7SynchronizationA high level view of parallelism and synchronization
#8AtomicityRace conditions, critical sections, mutexes, Instruction-level atomicity, spin Lock
#9DeadlockBounded buffer problem, read/write lock, semaphore, condition variable, monitor, circular waiting, and deadlock avoidance
#10CPU schedulerProcessor behavior anaylsis, scheduling architecture, FCFS, SJF, STCF, RR and CPU burst prediction,
#11Advanced CPU schedulerPriority scheduling basics, priority boost, EDF, MLQ, MLFQ, fair scheduling, lottery scheduling, stride scehduling, multiprocessor-aware scheduling, MQMS, process migration, CFS and red-black process tree
#12Virtual memorySegementation, multi-segment model, segment translation, translation table, swapping, paging, sharing, multi-level translation, two-level page table and inverted page table
#13Cache and TLBCache basics, direct mapped cache, set associative cache, fully-associative cache, address translation on caching, TLB, demanding paging, paging table entry and software-driven TLB
#14Page replacementPage faults, FIFO, MIN, LRU, Belady's anomaly, clock algorithm, n-chance approximated LRU and free-list
#15Disk schedulingDisk architecture and organization, interfaces, transfering data, caching, FCFS, SSTF, SCAN, C-SCAN, C-LOOK and device-level command-queueing
#16Beyond disksBlock addressing, chunk sizing, RAID performance analysis, RAID-0, RAID-1, hybrid-RAID, RAID-4, RAID-5, RAID-6, flash, SSD, garbage collection, TRIM and wear-leveling
#17File system basicsFile system overview, MBR, patition, root file system, mount, virtual file system, file allocation table and file meta data, FAT analysis
#18inode, block, and block groupinode, inode block pointers, link, ext optimization for many small file, fast file system, ext and ext2
#19JournalingConsistency and reliability, file system checker, write-ahead log, commits and checkpoints, crash recovery, meta-data journaling
#20Log-structureExtents and B-Trees, log-structured file system, buffering writes, garbage collection and copy-on-write
#21Full virtualizationVMM organization and functions, guest, virtual machine hardware, protected mode, privileged instructions, binary translation, caching translated code and shadow page tables
#22ParavirtualizationHardware support for VM, virtualization performance analysis, AMD-V and VT-x, second level address translation, Xen, hypercalls, virtual devices, virtual devices

Textbook

Operating Systems Concepts, 9th Edition Silbershatz, Galvin, Gagne

Suggested references

Operating Systems: Three Easy Pieces, Remzi and Andrea Arpaci-Dusseau.
Free, PDFs available online
The Design and Implementation of the FreeBSD OS
The Practice of Programming
The Mythical Man-Month

Projects

  • Project-0: Install Pintos and implement print_name event [ description ]
  • Project-1: Threads, timer and priority scheduler [ description is available at YSCEC ] [ DESIGNDOC sample ]
  • Project-2: System call implementation [ DESIGNDOC sample ]
  • Project-3: Virtual memory implementation [ DESIGNDOC sample ]

Check OTL Reviews (EE415)

Check OTL Reviews (EE415)
Operating Systems and System Programming for Electrical EngineeringMyoungsoo Jung2021spring
아주좋아요 유익함
Operating Systems and System Programming for Electrical EngineeringMyoungsoo Jung2021spring
강의 :
여태 들었던 수업 중에 시계를 가장 적게 본 수업이었습니다.
대학교 수업이 이렇게 재미있을 수 있는지 처음 알았습니다.
졸 수가 없습니다.

한국어는 아예 못 쓰게 하셨는데,
저는 영어 정말 못하지만 단 한문장도 못 알아들을 만한 게 없었습니다.
듣다 보면 본인 사실은 리스닝 고수가 아닐까 하는 생각도 듭니다.

렉처노트도 레전드입니다.

널널 :
당연히 OS 수업이니까 널널하지는 않았습니다.
대신, 핀토스 대신 xv6를 썼는데 xv6 과제 중에서도 쉽게 구현할 수 있는 부분만 낸 것 같았습니다.
수업 진도와 플젝 진도를 거의 일치시켜 주셔서 둘 다 집중할 수 있었습니다.
그리고 수업 두 번에 한번 꼴로는 일찍 마쳐주셨던 것 같습니다.

성적 :
시험 문제는 어렵지만 이조차도 공부에 도움이 됩니다.
달달 외워야하는 것도 많이 나오고, 달달 외워도 뇌지컬 딸리면 못 푸는 것도 나옵니다.
근데 달달 외우는 거 다 맞추고 뇌지컬 문제 좀 틀려도 메디안 이상은 나오니까 열심히 하면 성적도 잘 받을 수 있습니다.
Operating Systems and System Programming for Electrical EngineeringMyoungsoo Jung2021spring
강의 너무 잘하셔서 도움이 많이 되었습니다.
성적은 SU 선택해서 잘 주시는지는 잘 모르겠고, 과제와 강의만으로도 얻어가는게 많아서 좋았습니다~~


Memory Architecture and Storage Systems

Modern flash-based solid state disk (SSDs) can be plagued by enormous performance variations depending on whether the underlying architectural complexities and flash management overheads can be hidden or not. Designing a smart flash controller and storage system is key hiding these architectural complexities and reducing the internal firmware overheads. In this course, we first understand the core components of SSD architecture and key concepts behind flash firmware. It then presents a set of novel storage optimizations including various concurrency methods, I/O scheduling algorithms, and garbage collection avoidance mechanisms.

The topic we will cover through this class as follows:

Lectures (in progress)

  1. Logistics
  2. Flash introduction -- NAND Flash Basics, Basics of floating gates and Reliability issues of NAND cells
  3. Fundamental address mapping (FTL) -- Simple mapping algorithm and physical block management
  4. Advanced address mapping (FTL) -- Associativity, garbage collection and wear leveling basics
  5. Garbage collection basic -- Foreground and background garbage collection techniques
  6. Flash-level controller [ pdf ] [ ppsx ] -- Flash memory transactions and advanced command control
  7. SSD architecture and system-level controller [ pdf ] [ ppsx ] -- SSD Architecture and I/O parallelism-centric design techniques
  8. Wear-leveling algorithms -- Reliability management functions and hot/cold data management
  9. Internal buffer management -- DRAM caching, flash aware replacement and buffering mechanisms

The lectures will also have invitation talks that cover a series of industrial topics non-volatile memory express (NVMe) architecture, device management, and distributed flash controller. We will also provide a simulation framework for your project that can accelerate your knowledge on storage systems.


Advanced Programming Language

This course is mainly designed towards introducing the design and implementation of programming language. From the design perspective, we will study language features for expressing algorithms. On the other hand, we will also study the basic concepts of the tools to map such language features onto modern computing hardware (such as compilers, and interpreters). In this course, rather than harp on the feature of a particular language, we will focus on fundamental concepts, the differences among the programming languages, the reasons for those differences, and the implication of those differences offers language implementation. The topic we will cover through this class as follows:

  • formal aspects of syntax and semantics
  • naming, scoping, and binding
  • scanning, parsing, semantic analysis, and code generation
  • control flow, subroutines, exception handling, and concurrency
  • type systems, composite types, data abstraction, and storage management
  • imperative, functional, logic-based, and object-oriented programming paradigms

Prerequisites

It would be preferred to prepare the concepts of programming and have a practice on programming based on your language preference. We will assume that you either know the material that is supposed to be covered in the fundamental issues, or that you are willing to learn the material as necessary.

Textbooks

Programming language pragmatics/Scott, Michael Lee/Elsevier/Morgan Kaufmann Publishers

Suggested references

Structure and interpretation of computer programs/Abelson, Harold/MIT Press ; McGraw-Hill

Check OTL Reviews (EE209)

Check OTL Reviews (EE209)
Programming Structure for Electrical EngineeringMyoungsoo Jung2020fall
C언어를 전반적으로 배우고, 나아가 어셈블리어, 그리고 내가 코딩한걸 컴퓨터가 어떻게 처리하는지에 대해서 배웁니다. 봄학기에 김동준 교수님의 전프구를 듣다가 기계음으로 녹음하는 녹강을 듣고 이건 도저히 아니다 싶어 드랍했었습니다. 그리고 다시 가을에 전프구를 도전하였습니다!

1. ppt(렉쳐노트)
정명수 교수님 렉노는 정말 말이 필요없습니다. 제가 수업을 잘 안 듣는 편이긴 한데..ㅎ 렉쳐노트가 정말 설명이 잘 되어있습니다. 물론 다른 분반과 내용적인 측면에서 큰 차이는 없습니다만, 다시 처음부터 새로 만드시는 것 같았습니다.
무엇보다도 각 챕터별로 배우는 내용을 도표?그림?으로 체계적으로 표시해두시는 것이 있었는데 렉노 내용이 그림처럼 다가오니까 정말 좋았습니다.

2. 과제
과제는 교수님에 따라 차이는 없습니다만, 클라썸에 올라가는 질문이 꽤 답변이 빨리 달리는 편인 것 같습니다! 조교님들이 다시는 거긴 하지만..? 과제하는데 크게 불편한 점은 없었습니다.
전프구 과제는 원래 빡셉니다. 총 5개의 과제가 나왔습니다. 비중은 5번과제가 정말 큽니다. 전프구 과제는 우선 시간을 투자한 만큼 성적을 받는 것 같습니다. 제가 과학고 출신이라 C언어를 아주 기초적인건 할 줄 알았지만 과제가 무척 어렵습니다. 난이도를 비교하자면
1번과제 << 3번과제 < 4번과제 <= 2번과제 <<<<<<< 5번과제
사실상 5번과제를 위해서 존재하는 과목이라고 생각합니다. 과제를 할땐 잠도 제대로 못자고 제출 이틀전부턴 밤새고 욕하면서 하지만 막상 과제 끝나고 보면 성장해있는 자기 자신을 확인 할 수 있습니다 :) 그만큼 유익하신 과목이라는 거지~

3. 시험
전프구가 과제가 빡센걸로 유명하지만 시험도 꽤 어려운 편이라고 생각합니다. 손코딩은 기본이거니와 개념을 "제대로""정확히" 꿰뚫고있지 못하면 틀리는 문제들을 내십니다. 유형은 족보에서 크게 벗어나지 않는 것 같으나, 그래도 어렵긴 어렵습니다. 다만 이번 경우가 특이 케이스인지 기말고사는 아주 쉽게 나왔던 것 같습니다.

4. 성적
이번엔 ABC와 SU 선택이 가능했습니다. 많은 학생들이 전프구는 빡센걸로 유명하니 SU를 선택하실거라 생각합니다. 그래서 이 틈을 타..!! 이 악명높은 전프구 A+ 노린다 라는 마인드로 ABC를 선택했습니다 :) 이번학기에 전공 4개와 미2를 들었는데, 전프구에 절반의 로드를 쏟아부은 만큼 열심히 했습니다.
중간고사는 상위 30~40대였던 것 같고, 기말고사는 좀 잘쳤습니다. 과제는 대부분 만점 가까이 받았고 5번과제는 150점 만점에 136점을 받아 총점 90점 중반이었습니다. 선배들 말로는, 지금까지 전프구는 90점 후반은 나와야 (97이상) A+ 받는다고 하셔서 반쯤 내려놓고 있었는데 A+을 받았네요..ㅎㅎ 아마 SU 선택한 학생들이 대부분 5번과제를 포기해 성적을 깔아줘서 이런 결과가 나오지 않았나~ 싶습니다.

전프구는 악명은 높지만 그만큼 얻는 것은 많은 과목이라고 생각합니다. 저처럼 수업 잘 안듣고ㅎㅎ 렉노를 열심히 보는 친구라면 정명수 교수님 수업 꼭 추천합니다! 이번에 전프구가 시스템이 좀 바뀐걸로 아는데 아무튼 열심히 하십시오!
Programming Structure for Electrical EngineeringMyoungsoo Jung2020fall
정명수 교수님은 피피티의 대가이십니다.
피피티만 보고도 이론이 체계적으로 잡히는 느낌은 처음이네요.
이번 수업에서 기존 수업자료들을 갈아엎을 정도로 수업에 진심이십니다.
성적은 꽤 후하게 주셨어요.
과제 5는 나오자마자 시작하세요. 시험 끝나고 일주일간 들이부어도 안됩니다.
Programming Structure for Electrical EngineeringMyoungsoo Jung2020fall
봄학기때 김동준 교수님 전프구를 수강하고 U를 받는 바람에(...) 이번 가을학기때 정명수 교수님 수업으로 재수강했습니다.
전반적으로 지난학기보다 업그레이드 된 부분이 많아서 매우 만족스러웠습니다. 가장 큰 차이점 2개를 꼽자면 1. 강의, 그리고 2. 렉쳐노트 였습니다.

1. 강의
지난 봄학기 메인수업은 TTS 강의였습니다. 주1회 줌수업이 있긴 했지만 필참이 아니었기에 듣지 않았습니다.
반면 이번학기 정명수 교수님 수업은 주2회 줌으로 진행됐고, 렉쳐노트만 봐서는 이해하기 어려울 수도 있는 부분들을 굉장히 매끄럽게 설명하셨습니다. 영어도 잘하시고 설명도 잘하시고 참여유도도 잘하십니다. 수업에 애정을 갖고 계신 게 보이는 느낌이었어요. 다음학기에 전자os를 맡으시던데, 제가 아직 그걸 들을 짬이 안되는게 안타까울 따름입니다. 교수님 수업 듣고싶어요...

2. 렉쳐노트
봄학기 전프구 렉쳐노트는... C언어가 처음이거나 익숙하지 않은 분들에게는 정말정말 불친절하게 느껴지는, 설명이 축약되어 있는 피피티였습니다. 그런데 이번에 리뉴얼된 렉쳐노트는 정말 만족스러웠습니다. 그 덕에 강의의 흐름을 놓치지 않을 수 있었고, 혹시 잠깐 졸았더라도 렉쳐노트가 이해하기 쉽게 되어 있어서 금방 따라잡을 수 있었습니다. 지난 봄학기에 강의내용 자체를 거의 이해하지 못했던 저로써는 정말 감사한 변화였습니다.

3. 성적
저번학기때 C언어를 전혀 모르는 채로 들었다가 된통 당하고 U를 받았는데, 이번에는 A-를 받았습니다. 재수강이었기에 A0를 받을 수 있는 성적이었는지 확실치는 않지만, 아무튼 저는 재수강을 통해서 굉장히 많은 것들을 얻어갈 수 있었어요. 지난학기의 제가 정말 아무것도 몰랐다는 것도 느꼈구요 ㅋㅋ

마지막으로 덧붙이자면, 저처럼 코딩경험이 프밍기 외에 전무하고, C언어를 접해보지 않은 상태에서 듣는 분이시라면 처음 코딩환경 셋팅하는것부터 굉장히 생소하고 어려우실 수 있어요. 그리고 C언어로 처음 코드를 짜게 되는 1번과제는, 나중에 돌아보면야 쉽게 느껴지지만 그때 당시에는 체감난이도가 어마어마했습니다.
그리고 저는 봄학기에 전프구를 들으면서 내용 이해도 안된 채로 코드를 무작정 짜려고 했어요. 어떻게든 일단 실행만 되게 해놓고 고치자 하는 마음으로요. 이게 프밍기에서는 통했는데, 전프구 과제처럼 나름 큰 프로그램을 만들 때에는 전!혀! 통하지 않더라구요. 제 생각엔 이게 제가 전프구를 힘들어한 이유가 아닐까 싶어요. 그러니 코딩이 낯선 분들은 부디 C언어에 먼저 익숙해지신 후에 과제에 손대는 걸 추천드릴게요. 과제부터 건들다가는 시간만 날리고 아무것도 못합니다ㅠㅠ

에타나 otl 후기에 보면, 코딩경험 없는데도 충분히 따라갈만 했다, 전프구의 악명은 과장된 것이다 라는 말이 꽤 있는데, 저에게는 굉장히 힘든 과목이었어요. 그치만 강의를 천천히 잘 따라가면서 C언어 문법을 일단 잘 익혀두면, 시간이 좀 많이 걸리더라도 과제는 할 만 합니다!! 제가 봄학기에 그랬던 것처럼 혹시나 수렁에 빠지시는 분이 있을까봐 길게 적어봤어요. 힘들어도 절망하지 마시고 렉쳐노트 따라가면서 내용이해부터 해보세요! 봄학기에 C-까지 S를 준다는 수업에서 U를 받았던 제가 이번학기에 A-를 받았으니 전프구 A대 당신도 할 수 있습니다~~~!!!!! 화이팅!!
Programming Structure for Electrical EngineeringMyoungsoo Jung2020fall
교수님이 목소리가 아주 좋으십니다. 강의도 잘하십니다. 렉쳐노트를 새롭게 리뉴얼하여 수업 들을 때 및 강의 복습 시 큰 도움이 되었습니다. 조교님들도 항상 최선을 다해 주셔서 도움이 많이 되었습니다.
전프구 듣기 전에는 포인터가 뭔지도 몰랐는데 그럭저럭 하다 보니 A+ 받았습니다. 악명에 비해 전혀 빡센 로드가 아닌 거 같아요. 전프구 악명은 과장된 면이 많다고 생각,,

여튼 교수님 짱짱맨 사랑합니다

Programming Structure for Electrical EngineeringMyoungsoo Jung2020fall
교수님 강의력이 정말 뛰어나십니다. 기초부터 차근차근 자세히 설명해주시고 학생들이 잘 이해했는지 중간중간에 확인하고자 물어보셨습니다 (대답하는 학생이 많이 없어지만...) 렉쳐노트도 깔끔하니 좋았습니다.
로드는... C언어 처음 배우는 사람으로서 꽤 빡셌습니다..ㅠㅠ 수업 따라가기 좀 어려웠던 적도 있었고, 과제 할 때마다 울고 싶었지만 코딩 잘하는 친구들한테 물어보면서 힘들게 제출했습니다.
시험을 잘 보진 못했지만 과제를 열심히 한 덕에 B+ 받았습니다. 예전에는 학점을 엄청 잘 주셨다고 하지만, 저는 과제/시험 점수 받은 만큼 나온 것 같아요. 성적에 살짝 아쉬움이 남긴 하지만 끝나서 후련합니다.
Programming Structure for Electrical EngineeringMyoungsoo Jung2020fall
호올 프으 구우
교수님 존잘 목소리도 좋으심 성격도 좋으신듯
근데 학생들이 반응 별로 안해줘서 그런지 약간 위축? 섭섭? 아쉬움? 같은게 보여서 괜히 내 마음이 아팠음..
다만 저도 강의를 안들어서 그저 죄송할 뿐... 렉노 업데이트가 낳은 폐해랄까..하하..ㅠㅠㅠ
그래도 코어과목이니만큼 렉노는 좋을 수록 좋은듯 합니다
그리고 전프구 들으실 모든 분들께 간곡히 드리고자 하는 말이 있습니다
"제발 기말을 던져서라도 과제5 빡세게 하십시오"
과제5 진짜 적당히 잘한 사람이랑 적당히 못한 사람이랑 100점 가까이 차이나는 헬이어서
기말 몇십점 차이 나는거 과제5로 홀라당 뒤집힙니다
덕분에 시험이랑 과제1~4 다 평균보다 높다가 과제5 개망해서 a대 기대하다 b+뜰 걱정까지 했네요
다행히도 a- 떴지만.. 다른 분들은 저 같은 고통 겪지 마세요ㅠㅠ

** 언어는 c가 대부분이고, c++ 한 차례 수업하시는데 별로 안중요하고, IA-32 어셈블리를 수업 시간 때 배웁니다. 그리고 과제4를 어셈블리로 짜야하죠. 이 외에 다른 언어는 안써요~


Computer Organization and Design

This course will mainly introduce computer organization and design, including the following topics:

  • Instruction set design, illustrated by the MIPS instruction set architecture.
  • Design of the datapath and control for a simple processor.
  • CPU performance analysis and systems-level view of computer arithmetic.
  • Parallelism, pipelining, hazard and dependency
  • Cache and Memory design.
  • Hierarchical memory.
  • I/O subsystems, storage systems, I/O performance analysis.

Even though the class topics are related to architecture fundamentals, students are expect to have some hardware and computer science background. This course will include two or three simple projects, one of each leveraging a different style of simulation models build for an educational purpose. The one of the goal behind these projects is that students can learn i) how to use full system simulation software and ii) how to perform simulation-based architectural studies, which in turn can be a good steppingstone for your future research. The simulation framework built on both most 32-bit and 64-bit flavors of UNIX and Windows NT-based operating systems, but we recommend to modify them on a UNIX-like system. The projects will be relatively simple (compared to what an advanced computer architecture course usually deals with), but students should be capable of freely analyzing/modifying C/C++ written software models.

Prerequisites

We expect that you know C/C++ and data structures, have done some assembly language programming, and that you know about series and products, logarithms, advanced algebra, some calculus, and basic probability (means, standard deviations, etc.). We will assume that you either know the material that is supposed to be covered in those fundamental topics, or that you are willing to learn the material as necessary.


TEACHING HISTORY

  • EE 312 Introduction to Computer Architecture (Spring'22)
  • EE 817 Advanced Flash Storage and File Systems (Fall'21)
  • EE 415, PD 511 Operating Systems and System Programming for Electrical Engineering (Spring'21)
  • EE 209 Programming Structure (Fall'20)
  • EE 488 Parallel Computer Architecture (Spring'20)
  • EE 488 Parallel Computer Architecture (Fall'19)
  • EE 817 Advanced Flash Storage and File Systems (Spring'19)
  • IIT 6044 Advanced Operating Systems (Fall'18)
  • IIT 3002 Operating Systems (Fall'18)
  • IIT 1001 Advanced Programming (Spring'18)
  • IIT 6047 Computer Architecture (Spring'18)
  • IIT 8015 Memory Architecture and Storage Systems (Spring'17)
  • IIT 1001 Advanced Programming (Spring'17)
  • IIT 1014 Gateway to Integrated Technology (Spring'17)
  • IIT 6036 Computer Organization and Design (Fall'16)
  • IIT 3002 Operating Systems (Fall'16)
  • IIT 7024 Advanced System Architecture (Spring'16)
  • IIT 1001 Advanced Programming (Spring'16)
  • IIT 6036 Computer Organization and Design (Fall'15)
  • IIT 3002 Operating Systems (Fall'15)
  • EE/CE 4304 Computer Architecture (Spring'15)
  • EEDG 6302 Microprocessor Systems (Spring'15)
  • EE/CE/CS 6304 Computer Architecture (Fall'14)
  • EEDG 6302 Microprocessor Systems (Spring'14)
  • EE/CE/CS 6304 Computer Architecture (Fall'13)