Tutorial
- 데이터사이언스 스쿨: https://datascienceschool.net/intro.html
Libraries to use
- scipy: https://scipy.org/
- numpy: https://numpy.org/
- matplotlib: https://matplotlib.org/3.1.0/index.html
- scikit-learn: https://scikit-learn.org/stable/
- pytorch: https://pytorch.org/
- gensim: https://radimrehurek.com/gensim/
- FastText: https://fasttext.cc/
Helpful Links for Pre-knowledge
- 점프 투 파이썬: https://wikidocs.net/book/1
- Teachable Machine: https://teachablemachine.withgoogle.com/
- numpy quickstart tutorial: https://numpy.org/devdocs/user/quickstart.html
- numpy tutorial: https://www.tutorialspoint.com/numpy/index.htm
- requests와 BeautifulSoup으로 웹 크롤러 만들기: https://beomi.github.io/gb-crawling/posts/2017-01-20-HowToMakeWebCrawler.html
- An Introduction to Online Machine Learning with Scikit-learn: https://dziganto.github.io/data%20science/online%20learning/python/scikit-learn/An-Introduction-To-Online-Machine-Learning/
- Incremental (Online) Learning with Scikit-Multiflow https://towardsdatascience.com/incremental-online-learning-with-scikit-multiflow-6b846913a50b
Helpful Links for Deep learning
- 모두를 위한 딥러닝: https://hunkim.github.io/ml/
- 딥러닝을 이용한 자연어 처리 입문: https://wikidocs.net/book/2155
- FastText: https://fasttext.cc/docs/en/support.html
- How to use Different Batch Sizes when Training and Predicting with LSTMs: https://machinelearningmastery.com/use-different-batch-sizes-training-predicting-python-keras/
- How to Use Word Embedding Layers for Deep Learning with Keras: https://machinelearningmastery.com/use-word-embedding-layers-deep-learning-keras/
- How to update LSTM Networks During Traning for Time Series Forecasting https://machinelearningmastery.com/update-lstm-networks-training-time-series-forecasting/
- Online/Incremental Learning with Keras and Creme https://www.pyimagesearch.com/2019/06/17/online-incremental-learning-with-keras-and-creme/
- Online machine learning with creme: https://maxhalford.github.io/slides/creme-pydata/#1
- Introduction to Online Machine Learning: Simplified https://www.analyticsvidhya.com/blog/2015/01/introduction-online-machine-learning-simplified-2/
- Data Streams and Online Machine Learning in Python: https://medium.com/analytics-vidhya/data-streams-and-online-machine-learning-in-python-a382e9e8d06a
- Stateful and Stateless LSTM for Time Series Forecasting with Python https://machinelearningmastery.com/stateful-stateless-lstm-time-series-forecasting-python/
Introduction
We will review the concept of software architecture and practice software architecture design. We also use architecture design tools, if needed. In addition, we review the latest trends in standards and industry.
- Lecturer: Seonah Lee
- Class Time: Wednesday 19:00-21:50
- Class Rome: No. 202 (or 204)
Objectives
- Students will be able to explain the concept of software architecture.
- Students will be able to document software architecture.
- Students will be able to discuss the latest trends in standards and industry.
References
- Applied Software Architecture, Addison-Wesley
- FACE (Future Airborne Capability Environment)
- Getting started with Rational Rhapsody
- download pdf "Systems Engineering Tutorial for IBM Rational Rhapsody"
- download pdf "IBM Rational Rhapsody User Guide"
- download pdf "Essentials of IBM Rational Rhapsody v7.5"
- download pdf "model-based development - tutorial - KTH"
- download pdf "Rhapsody Tutorial - KSU"
- Arcadia Modeling / Arcadia Overview / Capella
- Architecture Pattern Guide [Korean]
- Design Patterns eBook
- Design Patterns - Tutorialpoints
Tool Installation
- You can download UML Rhapsody from here. The version is Rhapsody Architect for Software v8.2.
- You can then set up the license as the following steps:
- Set up the value of the system environment variable TELELOGIC_LICENSE_FILE. (Please, ask the value to the instructor Seonah Lee, Hint: 9X3).
- Find HKEY_CURRENT_USER\Software\FLEXlm License Manager in window registry, and set up the value of TELELOGIC_LICENSE_FILE.
- You can find the tool already installed in Room 202.
Evaluation
| Proposal | 10% | FACE Presentation | 20% |
| Mid-term Presentation | 25% | Attendance and Discussion, etc. | 10% |
| Final Presentation | 35% |
*. You can replace your attendance by summarizing each book chapter and submit your summary to e-campus. If you want to replace your attendance with your summary, please email to This email address is being protected from spambots. You need JavaScript enabled to view it..
*. You have to submit your 6 assignments to e-campus.
Schedule
|
Week |
Date |
Content |
Submission |
|
1 |
Mar. 13 |
|
|
|
2 |
Mar. 20 |
|
|
|
3 |
Apr. 3 |
Proposal Presentation
|
|
|
4 |
Apr. 10 |
|
|
|
5 |
Apr. 24 |
Mid-term Presentation |
|
|
May 1 |
Architecture Documentation
|
||
|
6 |
May 8 |
Architecture Evaluation
|
|
|
7 |
May 15 |
|
|
|
9 |
Jun 12 |
Final Presentation |
Mid-term Presentation
|
*. The schedule, lecture materials, and assignments can be changed and updated just before each class.
Project
You can choose any software project that you have done, you are doing, or your plan to do. In this class, you will perform software architecture design activities for the project.
FACE Presentation
You can download the FACE pdf from here. If you want to get an overview of FACE, please refer to the presentation slides.
- FACE Presentation I OS Segment p.16-44 (29 pages) 이건표
- FACE Presentation II IO Segment/Platform-specific Services Segment p.45-57 (13 pages) 안찬주
- FACE Presentation III Transport Services Segment, p.57-80 (24 pages) 조희태
- FACE Presentation IV Data Architecture/Portable Component Segment p.81-88 (10 pages) 이현권
- FACE Presentation V Graphic Services/LCM Services p.95-112 (17 pages)
Introduction
We will look at the latest research trends and tools necessary for software evolution with an overall understanding of software engineering.
- Lecturer: Seonah Lee
- Class Time: Wednesday 19:00-21:50
- Class Rome: No. 203 (or 204)
References
- UC Berkeley CS169 Software Engineering
- http://cs169.saas-class.org/fall-2017-info#TOC-Links-Course-Resources
- https://edge.edx.org/courses/course-v1:UCBerkeley+CS169+2017_Fall/course/
- You have to sign up the edx site to take the lectures in CS169.
Major Tasks
- Development Project: Individually, you have to choose a development project. It could be your own research project, any open source project, or the project in your company. If you can find no project, you can choose the Ruby-on-Rails project that is incorporated with the CS169 class. In this class, you should consider several aspects of software engineering and mull over the application of software engineering principles and practices to your project. In the final presentation, you should show the application results and your reflections on the application of software engineering.
- Paper Presentation: You have to select one research paper from our reading list and present it. You also have to discuss another paper.
Discussion Guidance
Graduate students who just entered the graduate school may not know how to discuss a scientific journal paper. There are a lot of useful advices. Please, refer to the following links:
- How to Lead a Discussion of Scientific Journal Articles [pdf], Julia K. Baum.
- Leading a discussion of a scientific paper, Chris Buddle, 2015.
- Tips for students leading a journal club discussion
Evaluation sheet
We will use the following evaluation sheet for each presenter [download]
Evaluation
| Project | Proposal | (~3 Slides) | 5% |
| Mid-term Presentation | (5~10 Slides) | 20% | |
| Final Presentation | (15~20 Slides) | 30% | |
| Final Report | (2 Page IEEE Format) | 5% | |
| Preparation | Weekly Report | (1 Page) | 20% |
| Presentation | Paper Presentation | 10% | |
| Discussion Lead | 5% | ||
| Attendance | Attendance | 5% | |
*. You can replace your attendance by summarizing each video lectures and submit your summary to the e-mail: This email address is being protected from spambots. You need JavaScript enabled to view it.
Course Schedule
| Week | Theory, Discussion and Practice | Reporting, Presentation and Discussion | Discussion Lead |
| 1: 9.5 | Introduction to Software Engineering:1.1-1.3 | ||
| 2: 9.12 | Introduction to Software Engineering:1.7-1.13 | Paper Selection | |
| 3: 9.19 | Agile Methodology: Working with the Customer7.1-7.5, 7.11-7.12 |
|
|
| 4: 9.26 | Thanksgiving day (No class) | ||
| 5: 10.3 | National foundation day (No class) | ||
| 6: 10.10 | BDD with cucumber and Capybara7.6-7.9 |
Project Proposal Paper Presentation [3] 조희태 |
장규리 |
| 7: 10.17 | TDD with RSpec8.2-8.4 | Paper Presentation [2] 이주헌 | 김일환 |
| 8: 10.24 | TDD with RSpec8.5-8.9 | Paper Presentation [9] 장규리 | 이건표 |
| 9: 10.31 | Code Repo Hygiene for Agile Teams10.3-10.6 | Mid-term Presentation from 6:30 pm | |
| 10: 11.7 | Exploring a Legacy Codebase9.1-9.3 | No Class | |
| 11: 11.14 | Refactoring & SOFA9.5-9.6, 9.8-9.10 | Paper Presentation [14] 파라스 | 김일환 |
| 12: 11.21 | Design Patterns for SaaS11.1, 11.3-11.7 | Paper Presentation [11] 미르잔 | 파라스 |
| 13: 11.28 | Practical DevOps: Deployment, Upgrades, Performance, Security12.1-12.3 | Paper Presentation [1] 이건표 | 조희태 |
| 14: 12.5 | Final Presentation |
*. Classes and schedules can be adjusted.
Reading List (ICSE 2018 Paper)
- Russo, Daniel, Gerolamo Taccogna, Paolo Ciancarini, Angelo Messina, and Giancarlo Succi. Contracting agile developments for mission critical systems in the public sector. In Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Society, pp. 47-56. ACM, 2018.
- Gralha, Catarina, Daniela Damian, Anthony I. Tony Wasserman, Miguel Goulão, and João Araújo. "The evolution of requirements practices in software startups." In Proceedings of the 40th International Conference on Software Engineering, pp. 823-833. ACM, 2018.
- Rath, Michael, Jacob Rendall, Jin LC Guo, Jane Cleland-Huang, and Patrick Mäder. "Traceability in the wild: automatically augmenting incomplete trace links." In Proceedings of the 40th International Conference on Software Engineering, pp. 834-845. ACM, 2018.
- Inayat Rehman, Mehdi Mirakhorli, Meiyappan Nagappan, Azat Aralbay Uulu, and Matthew Thornton. 2018. Roles and impacts of hands-on software architects in five industrial case studies. In Proceedings of the 40th International Conference on Software Engineering (ICSE '18). ACM, New York, NY, USA, 117-127.
- Meng, Na, Stefan Nagy, Danfeng Daphne Yao, Wenjie Zhuang, and Gustavo Arango Argoty. Secure coding practices in java: Challenges and vulnerabilities. In Proceedings of the 40th International Conference on Software Engineering, pp. 372-383. ACM, 2018.
- Sawant, Anand Ashok, Mauricio Aniche, Arie van Deursen, and Alberto Bacchelli. "Understanding Developers’ Needs on Deprecation as a Language Feature." In Proceedings of the 40th ACM/IEEE International Conference on Software Engineering (ICSE 2018). forthcoming. 2018.
- Zhilei Ren, He Jiang, Jifeng Xuan, and Zijiang Yang. 2018. Automated localization for unreproducible builds. In Proceedings of the 40th International Conference on Software Engineering (ICSE '18). ACM, New York, NY, USA, 71-81.
- Foyzul Hassan and Xiaoyin Wang. 2018. HireBuild: an automatic approach to history-driven repair of build scripts. In Proceedings of the 40th International Conference on Software Engineering (ICSE '18). ACM, New York, NY, USA, 1078-1089.
- Saha, Ripon K., Hiroaki Yoshida, Mukul R. Prasad, Susumu Tokumoto, Kuniharu Takayama, and Isao Nanba. "Elixir: an automated repair tool for Java programs." In Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings, pp. 77-80. ACM, 2018.**[included in comprehensive exam.]
- Pengcheng Wang, Jeffrey Svajlenko, Yanzhao Wu, Yun Xu, and Chanchal K. Roy. 2018. CCAligner: a token based large-gap clone detector. In Proceedings of the 40th International Conference on Software Engineering (ICSE '18). ACM, New York, NY, USA, 1066-1077.
- Chase Greco, Tyler Haden, Kostadin Damevski, StackInTheFlow: behavior-driven recommendation system for stack overflow posts. In Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings, (ICSE '18). ACM, New York, NY, USA, 5-8 **[included in comprehensive exam.]
- Phan, Hung, Hoan Anh Nguyen, Ngoc M. Tran, Linh H. Truong, Anh Tuan Nguyen, and Tien N. Nguyen.**[included in comprehensive exam.]"Statistical learning of API fully qualified names in code snippets of online forums." In Proceedings of the 40th International Conference on Software Engineering, pp. 632-642. ACM, 2018.
- Christopher Mendez, Hema Susmita Padala, Zoe Steine-Hanson, Claudia Hilderbrand, Amber Horvath, Charles Hill, Logan Simpson, Nupoor Patil, Anita Sarma, and Margaret Burnett. 2018. Open source barriers to entry, revisited: a sociotechnical perspective. In Proceedings of the 40th International Conference on Software Engineering (ICSE '18). ACM, New York, NY, USA
- Jane Cleland-Huang, Michael Vierhauser, and Sean Bayley. 2018. Dronology: an incubator for cyber-physical systems research. In Proceedings of the 40th International Conference on Software Engineering: New Ideas and Emerging Results (ICSE-NIER '18). ACM, New York, NY, USA, 109-112. DOI: https://doi.org/10.1145/3183399.3183408***[included in comprehensive exam.]
과목 소개
해당 수업은 이론(전용기 교수), 실습(이선아 교수)으로 나누어 진행합니다. 과목의 실습은 두 가지를 고려하여 순서를 배정하였습니다. 첫째, 전용기 교수님 수업과 가급적 일치하도록, 둘째, 2018년 1학기 이성진교수님 수업과의 일관성을 가지도록 주제와 실습을 배치하였습니다. 또한 기본 프로그래밍 언어는 C이나 이해를 돕기 위해 Python 코드를 활용한 설명과 실습을 진행할 수 있습니다. 실습 자료는 매 주차 e-campus를 통해 과제물로 공지하며, 이에 대한 제출물도 e-campus를 통해 관리합니다.
교재 및 참조 문헌
실습 및 숙제 계획
|
주차 |
주제 |
실습 |
숙제 |
|
01: 3/17,19 |
C복습: 포인터와 배열 |
포인터와 배열 |
실습 결과 제출 |
|
02: 3/24,26 |
C복습: 구조체 |
구조체 |
실습 결과 제출 |
|
03: 3/31,2 |
알고리즘 성능분석, 재귀문 |
재귀문제, 성능분석 |
이론 Algorithm 숙제 |
|
04: 4/7, 9 |
링크드 리스트 |
링크드 리스트 |
이름순으로 삽입, 삭제 구현 |
|
05: 4/14,16 |
스택 |
스택 |
사칙연산이 들어오면 계산 |
|
06: 4/21,23 |
큐 |
큐 |
이론 Data Structure 숙제 실습 결과 제출 |
|
07: 4/28,30 |
중간고사 |
- |
- |
|
08: 5/5,7 |
트리 |
트리 |
최소 신장 트리 구하기 |
|
09: 5/12,14 |
탐색 |
탐색 |
이론 Searching 숙제 |
|
10: 5/19,21 |
정렬 |
정렬 |
실습 결과 제출 |
|
11: 5/26,28 |
그래프 |
그래프 |
이론 Sorting 숙제 |
|
12: 6/2,4 |
해시테이블 |
해시테이블 |
전화번호부 구현 |
|
13: 6/9,11 |
분할정복 |
분할정복 |
그래프 Application 숙제 |
|
14: 6/16,18 |
동적계획법 |
동적계획법 |
Longest Common Sequence 구하기 |
|
15: 6/23,25 |
기말고사 |
- |
- |
*. 해당 실습과 숙제는 기본 C언어로 진행하며, 이해를 돕기 위해 일부 Python코드를 활용할 수 있습니다.
*. 해당 실습과 숙제는 진행 과정에 변경될 수 있습니다.
*. The grade of assignment will be subtracted by 1 point each day after the deadline.
Course Information
| Lecturer | Prof. Seonah Lee |
| Time and Place | Tuesday, 19:00-22:00, 407-604 |
This is a graduate course where we review and discuss the papers that are relevant to software evolution. Students also experiment with tools and data for verifying the results of the selected papers.
Course Introduction
Software evolution is a process of constantly changing and improving software systems that are initially developed. The cost of software evolution accounts for more than 90% of the total lifecycle cost of a software system. This course introduces the recent techniques that can resolve several problems of software evolution and that can reduce its cost. Among the solutions, we focus on mining software repositories and maintaining open source systems. Especially, to understand the recent research trends, we include ICSE2018 papers. Students also conduct replication experiments to understand the nature of experimental research. Temporarily, we are using the following site for students' submission: https://gnuse.tnaru.com/web/index
Objective
- Students will be able to present a paper.
- Students will be able to discuss a paper.
- Students can understand and replicate others' work.
- Students can understand the research trends of software evolution.
Discussion Guidance
Graduate students who just entered the graduate school may not know how to discuss a scientific journal paper. There are a lot of useful advices. Please, refer to the following links:
- How to Lead a Discussion of Scientific Journal Articles [pdf], Julia K. Baum.
- Leading a discussion of a scientific paper, Chris Buddle, 2015.
- Tips for students leading a journal club discussion
Evaluation sheet
We will use the following evaluation sheet for each presenter [download]
Reading List and Schedule
March 27th Repair (Presenter: 김태형, Discussion Leader: 백형진)
- Ming Wen, Junjie Chen, rongxin wu, Dan Hao, Shing-Chi Cheung, Context-Aware Patch Generation for Better Automated Program Repair, ICSE 2018
- Zhang, Mingxing, Yongwei Wu, Shan Lu, Shanxiang Qi, Jinglei Ren, and Weimin Zheng. "A lightweight system for detecting and tolerating concurrency bugs." IEEE Transactions on Software Engineering 42, no. 10 (2016): 899-917.
- Eu-teum Choi et al. Development of technique for healing data races based on software transactional memory, 2016
- Sergey Mechtaev, Manh-Dung Nguyen, Yannic Noller, Lars Grunske, Abhik Roychoudhury, Semantic Program Repair Using a Reference Implementation, ICSE2018.
- Towards Practical Program Repair with On-Demand Candidate Generation, Jinru Hua, Mengshi Zhang, Kaiyuan Wang, Sarfraz Khurshid
April 3rd Refactoring (Presenter: 박종열, Discussion Leader: 장규리)
- Tsantalis, Nikolaos, et al. "Accurate and Efficient Refactoring Detection in Commit History." Software Engineering (ICSE), 2018
- Bavota, Gabriele, et al. "Methodbook: Recommending move method refactorings via relational topic models." IEEE Transactions on Software Engineering 40.7 (2014): 671-694.
- Murphy-Hill, Emerson, Chris Parnin, and Andrew P. Black. "How we refactor, and how we know it." IEEE Transactions on Software Engineering 38.1 (2012): 5-18.
April 10th API learning (Presenter: 조희태, Discussion Leader: 정세린)
- Xiaodong Gu, Hongyu Zhang, Dongmei Zhang, Sunghun Kim. DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning. In Proceedings of the 26th international Joint Congerence on Artificial Intelligence (IJCAI’2017), 2017
- Deep API Learning. Xiaodong Gu, Hongyu Zhang, Dongmei Zhang, Sunghun Kim. Deep API Learning. In Proceedings of the 24th ACM SIGSOFT International symposium on Foundations of Software Engineering (FSE’16), pages 631-642. ACM, 2016.
- Neural Machine Translation By Jointly Learning To Align And Translate. Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio. Neural Machine Translation By Jointly Learning To Align And Translate. In Proceedings of the International Conference on Learning Representations (ICLR'15)
April 17th No class
April 24th Cloning (Presenter: 장규리, Discussion Leader: 박종열)
- Kamiya, Toshihiro, Shinji Kusumoto, and Katsuro Inoue. "CCFinder: a multilinguistic token-based code clone detection system for large scale source code." IEEE Transactions on Software Engineering 28.7 (2002): 654-670.*
- On detection of gapped code clones using gap locations, Date of Conference: 4-6 Dec. 2002, Date Added to IEEE Xplore: 28 February 2003, Authors : Y. Ueda, T. Kamiya, S. Kusumoto
- Index-based code clone detection: incremental, distributed, scalable, Date of Conference: 12-18 Sept. 2010, Date Added to IEEE Xplore: 25 October 2010, Authors : Benjamin Hummel, Elmar Juergens, Lars Heinemann
- Using a clone genealogy extractor for understanding and supporting evolution of code clones, St. Louis, Missouri — May 17 - 17, 2005, Authors: Miryung Kim, David Notkin
- White, Martin, Michele Tufano, Christopher Vendome, and Denys Poshyvanyk. "Deep learning code fragments for code clone detection." In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, pp. 87-98. ACM, 2016.
- Cheng, Xiao, Zhiming Peng, Lingxiao Jiang, Hao Zhong, Haibo Yu, and Jianjun Zhao. "Mining revision histories to detect cross-language clones without intermediates." In Automated Software Engineering (ASE), 2016 31st IEEE/ACM International Conference on, pp. 696-701. IEEE, 2016.
- Pengcheng Wang, Jeffrey Svajlenko, Yanzhao Wu, Yun Xu, Chanchal K. Roy, CCAligner: a token based large-gap clone detector, ICSE 2018 (no paper, yet)*
May 1st RTM (Presenter: 정세린, Discussion Leader: 조희태)
- Busari, Saheed A., and Emmanuel Letier. "Radar: A lightweight tool for requirements and architecture decision analysis." Proceedings of the 39th International Conference on Software Engineering. IEEE Press, 2017.
- Mills, Chris, and Sonia Haiduc. "A machine learning approach for determining the validity of traceability links." Software Engineering Companion (ICSE-C), 2017 IEEE/ACM 39th International Conference on. IEEE, 2017.
- Catarina Gralha, Daniela Damian, Anthony Wasserman, Miguel Goulao, João Araújo. "The Evolution of Requirements Practices in Software Startups" Software Engineering (ICSE), 2018
May 8th Bug patterns (Presenter: 백형진, Discussion Leader: 김태형)
- Lu, Shan, Soyeon Park, Eunsoo Seo, and Yuanyuan Zhou. "Learning from mistakes: a comprehensive study on real world concurrency bug characteristics." ACM SIGOPS Operating Systems Review 42, no. 2 (2008): 329-339.
- Park, Sangmin, Richard W. Vuduc, and Mary Jean Harrold. "Falcon: fault localization in concurrent programs." In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering-Volume 1, pp. 245-254. ACM, 2010.
- Krena, Bohuslav, Zdenek Letko, Rachel Tzoref, Shmuel Ur, and Tomáš Vojnar. "Healing data races on-the-fly." In Proceedings of the 2007 ACM workshop on Parallel and distributed systems: testing and debugging, pp. 54-64. ACM, 2007.