Week 16: 기말고사 FAQ

대전대학교 대학원 | 교수: 연삼흠

시험 안내

Q1. 시험 범위는 어디까지인가요?

9주차부터 14주차까지의 모든 강의 내용이 시험 범위입니다.

  • 9주차: 스마트 계약 기초, Solidity
  • 10주차: DApp 개발, Web3.js/Ethers.js
  • 11주차: DeFi 기초, AMM
  • 12주차: NFT, 토큰 표준
  • 13주차: 블록체인 보안
  • 14주차: 블록체인 응용
Q2. 시험 시간은 얼마나 되나요?

90분입니다. 객관식 15문항, 서술형 10문항, 실기 5문항으로 구성됩니다.

시간 배분 권장: 객관식 15분, 서술형 40분, 실기 35분

Q3. 실기 시험은 어떻게 진행되나요?

시험장 PC에서 Remix IDE를 사용하여 Solidity 코드를 작성합니다.

  • JavaScript VM 환경 사용 (테스트넷 연결 불필요)
  • 인터넷 접속은 Remix IDE 외 제한
  • 코드 작성, 컴파일, 배포, 함수 호출까지 수행
  • 정답 코드와 실행 결과 스크린샷 제출
Q4. 오픈북 시험인가요?

아닙니다. 클로즈드북(Closed Book) 시험입니다. 필기구와 학생증만 허용됩니다. 모든 전자기기(노트북, 스마트폰, 태블릿, 스마트워치)는 시험 시작 전 제출해야 합니다.

Q5. 성적에서 기말고사 비중은?

기말고사는 최종 성적의 30%를 차지합니다.

전체 구성: 중간고사 25% + 기말고사 30% + 프로젝트 25% + 과제 10% + 동료평가 5% + 출석 5%

Q6. 부분 점수가 있나요?

네. 서술형과 실기 문제에는 부분 점수가 있습니다.

  • 서술형: 핵심 개념 언급, 논리적 설명, 구체적 사례 등으로 나누어 채점
  • 실기: 코드 정확성, 컴파일 성공, 로직 올바름, 보안 고려 등으로 나누어 채점
  • 객관식: 부분 점수 없음 (정답 2점, 오답 0점)
Q7. 시험 중 질문할 수 있나요?

문제의 의미가 불명확한 경우에 한해 손을 들어 질문할 수 있습니다. 다만 정답에 대한 힌트를 요청하는 질문에는 답변하지 않습니다.

Q8. 재시험이 가능한가요?

원칙적으로 재시험은 없습니다. 다만 불가피한 사유(질병, 사고 등)로 시험에 응시하지 못한 경우, 증빙 서류를 첨부하여 교수님에게 별도 연락하시기 바랍니다.

주차별 핵심 키워드

9주차 핵심 키워드: 스마트 계약 기초

9주차

Solidity 상태 변수 msg.sender msg.value require / assert event / emit modifier mapping struct constructor 가시성 (public/private/internal/external) payable

핵심 출제 포인트: modifier 작성법, require를 이용한 조건 검사, mapping을 활용한 데이터 관리
10주차 핵심 키워드: DApp 개발

10주차

ABI Web3.js Ethers.js Provider Signer Contract 인스턴스 MetaMask 트랜잭션 전송 이벤트 리스닝

핵심 출제 포인트: ABI의 역할, Ethers.js를 사용한 컨트랙트 호출 코드 작성
11주차 핵심 키워드: DeFi 기초

11주차

AMM x * y = k 유동성 풀 유동성 공급자 (LP) Impermanent Loss DEX Flash Loan TVL 이자 농사 (Yield Farming) 슬리피지

핵심 출제 포인트: AMM 가격 결정 원리(x*y=k), 비영구적 손실 발생 이유, Flash Loan 특성
12주차 핵심 키워드: NFT 및 토큰 표준

12주차

ERC-20 ERC-721 ERC-1155 대체 가능 토큰 (FT) 대체 불가능 토큰 (NFT) tokenURI IPFS 민팅 (Minting) 로열티

핵심 출제 포인트: ERC-20/721/1155 차이점, transfer/approve/transferFrom 함수의 역할
13주차 핵심 키워드: 블록체인 보안

13주차

Reentrancy CEI 패턴 Integer Overflow Front-running 샌드위치 공격 51% 공격 The DAO ReentrancyGuard Slither Mythril WIA-SEC-006 보안 감사

핵심 출제 포인트: 재진입 공격 원리와 방어, 취약한 코드 식별 및 수정, The DAO 사건의 영향
14주차 핵심 키워드: 블록체인 응용

14주차

의료 블록체인 On-chain / Off-chain 환자 동의 관리 WIA-MED-024 HL7 FHIR 공급망 관리 ESG / 탄소 배출권 전자투표 DID VC (검증 가능한 자격증명) GDPR 오라클 문제

핵심 출제 포인트: On-chain/Off-chain 분리 전략, DID/VC 시나리오, GDPR과 블록체인 양립 방안

실기 시험 대비 가이드

Q9. 실기에서 가장 자주 출제되는 유형은?
  • 취약한 코드 수정: 재진입 취약점이 있는 코드를 CEI 패턴으로 수정
  • ERC-20 함수 구현: transfer, approve, transferFrom 중 하나
  • modifier 작성: onlyOwner 등 접근 제어 modifier
  • 코드 빈칸 채우기: Ethers.js 또는 Solidity 코드의 빈칸 완성
  • 간단한 스마트 계약 작성: 동의 관리, 투표 등
Q10. Remix IDE 사용법을 복습하고 싶습니다.

시험에서 필요한 Remix IDE 기본 조작:

  • File Explorer에서 새 파일(.sol) 생성
  • Solidity Compiler 탭에서 컴파일 (Ctrl+S)
  • Deploy & Run 탭에서 Environment를 "JavaScript VM"으로 설정
  • Deploy 버튼으로 배포
  • 배포된 컨트랙트의 함수를 호출하여 테스트

시험 전 최소 3개의 간단한 스마트 계약을 직접 작성, 배포, 테스트해 보세요.

Q11. 실기에서 컴파일 에러가 나면 어떻게 되나요?

컴파일 에러가 발생하면 부분 점수를 받게 됩니다:

  • 로직은 올바르지만 문법 오류: 60-80% 부분 점수
  • 핵심 로직이 포함되어 있으나 불완전: 40-60% 부분 점수
  • 완전히 잘못된 접근: 최소 부분 점수

가능한 한 컴파일이 되도록 하되, 시간이 부족하면 주석으로 의도를 설명해 두세요.

Q12. 필수 암기 코드 패턴은?

다음 패턴들은 반드시 손으로 작성할 수 있어야 합니다:

// 1. onlyOwner modifier modifier onlyOwner() { require(msg.sender == owner, "Not owner"); _; } // 2. CEI 패턴 withdraw function withdraw(uint amount) public { require(balances[msg.sender] >= amount); balances[msg.sender] -= amount; payable(msg.sender).transfer(amount); } // 3. ERC-20 transfer function transfer(address to, uint256 value) public returns (bool) { require(balances[msg.sender] >= value); balances[msg.sender] -= value; balances[to] += value; emit Transfer(msg.sender, to, value); return true; }

학습 전략

Q13. 효과적인 시험 대비 전략은?
  • 1단계: 각 주차별 핵심 키워드 정리 및 정의 암기
  • 2단계: 서술형 예상 문제를 직접 작성하고 답변 연습
  • 3단계: Remix IDE에서 핵심 코드 패턴 3회 이상 직접 작성 연습
  • 4단계: 각 주차 FAQ를 다시 읽으며 개념 확인
  • 5단계: 스터디 그룹에서 서로 질문하며 복습
Q14. 가장 많이 출제되는 주차는?

13주차(블록체인 보안)가 20%로 가장 높은 비중을 차지합니다. 그 다음으로 9주차, 10주차, 11주차, 14주차가 각 15%입니다.

특히 보안 취약점 식별 및 코드 수정은 서술형과 실기 모두에서 출제 가능성이 높습니다.

Q15. 서술형에서 높은 점수를 받으려면?
  • 구조화: 번호를 매기거나 항목별로 나누어 작성
  • 핵심 용어 사용: 전문 용어를 정확히 사용 (예: "재진입"이 아닌 "Reentrancy")
  • 구체적 사례: "The DAO 사건" 등 실제 사례 언급
  • 비교 대조: 장단점을 균형 있게 서술
  • 간결함: 핵심만 명확하게 (불필요한 서론 배제)
Q16. 시험 당일 시간 관리 팁은?
  • 객관식 먼저 풀기 (20분 이내)
  • 확실하지 않은 객관식은 표시해 두고 넘어가기
  • 서술형은 아는 것부터 먼저 작성 (40분)
  • 실기는 컴파일 확인 시간을 포함하여 35분 배분
  • 객관식 먼저 빠르게 풀고(15분), 남은 시간 배분
Q17. 중간고사와 기말고사 범위가 겹치나요?

기말고사 범위는 9-14주차로, 중간고사 이후의 내용만 포함됩니다. 다만 블록체인의 기본 개념(합의 메커니즘, 해시, 블록 구조 등)은 전제 지식으로 필요하므로, 기본 개념이 부족하다면 1-8주차 내용도 간략히 복습하는 것을 권장합니다.

Q18. 성적 이의신청은 어떻게 하나요?

성적 공개 후 1주일 이내에 교수님에게 이메일로 이의신청 가능합니다. 구체적인 문항 번호와 이의 사유를 명시해야 하며, 채점 기준에 따라 재검토합니다.

Q19. 프로젝트 점수가 좋으면 기말고사를 가볍게 봐도 되나요?

기말고사 비중이 30%로 가장 높기 때문에, 기말고사 점수가 최종 성적에 큰 영향을 미칩니다. 프로젝트에서 만점을 받더라도 기말고사에서 낮은 점수를 받으면 전체 등급이 하락할 수 있습니다. 두 항목 모두 균형 있게 준비하세요.

Q20. 한 학기 수고하셨습니다. 마지막 조언이 있나요?

블록체인 기술은 빠르게 발전하고 있습니다. 이번 학기에 배운 내용은 기초이며, 졸업 후에도 지속적인 학습이 필요합니다.

시험 대비 최종 체크리스트:

  • 각 주차 핵심 키워드를 빠짐없이 정리했는가?
  • 서술형 예상 문제에 대한 답변을 직접 작성해 보았는가?
  • Remix IDE에서 코드를 직접 작성하고 테스트해 보았는가?
  • 보안 취약점을 식별하고 수정할 수 있는가?

충분히 준비하시면 좋은 결과가 있을 것입니다. 한 학기 동안 수고하셨습니다.