Experience

Work Experience

  • Oct 2018 - Aug 2019, Springboard, Online job guarantee bootcamp in the US
    Data Science Career Track (Deep Learning Specialization)
  • Sep 2013 - Apr 2018, Korea University, Seoul, South Korea
    Position: Research Professor
    • Led the research projects for automating the refactoring identification process as a sole Principal Investigator
    • Advised graduate students to develop research topics and conduct the experiments
    • Published the research results to the top tier Software Engineering journal, IEEE Transactions on Software Engineering
  • Mar. 2005 - Aug. 2013, Korea Advanced Institute of Science and Technology (KAIST), Daejeon, South Korea
    Position: Research and Teaching Assistant
    • Played an active role in setting up assignments and taught a few classes for several computer science subjects, Introduction to Programming (CS101), Advanced Software Engineering (CS650), Computer Science Project (CS408), and Principles of Software Engineering (SEP521)
    • Developed the method to improve the efficiency of refactoring identification process by devising an efficient algorithm for calculating the impacts of the application for a large number of refactoring candidates
    • Developed the tool for automated refactoring identification with Java and Python
  • Aug. 2004 - Oct. 2004, Peace Corps (Headquarters), Washington D.C., USA
    Position: Intern
    • Served in organizing and populating the intranet web pages in the Technical Infrastructure and Support Team under the Office of the Chief Information Officer (Funded by Human Resources Development Service of Korea)
    • Happy memories can be found: photos.
  • Feb. 2004 - Apr. 2004, Zio Interactive (acquired by Neowiz Mobile), Seoul, South Korea
    Position: Software Developer Intern
    • Worked in the mobile game company and contributed solely to porting an existing soccer game to a new game development environment (SDK from Qualcomm BREW (KT) to SK-VM (SKT))

Funded Projects

  • Nov. 2014 - Apr. 2017, An Approach to Automating Refactoring for Evolvable Software
    (Individual Basic Science & Engineering Research Program)
    Nov. 2013 - Oct. 2014, Research on Automated Software Maintainability Improvement
    (Post-Doctoral Fellowship Grant)
    sole Principal Investigator
    National Research Foundation of Korea (NRF), Daejeon, South Korea
    • Developed the method to improve the efficiency of refactoring identification process by devising an efficient algorithm for calculating the impacts of the application for a large number of refactoring candidates
    • Led to develop tools for automating the refactoring identification process and performed several empirical studies on large-scale open sources
    • Published the results to the top tier Software Engineering conferences and journals

  • Jul. 2008 - Dec. 2008, Software Process Improvement and Capability Analysis based on K-Model
    Korea IT Industry Promotion Agency, Seoul, Korea
    • Develop metrics for analyzing improvement and capability of the software processes that are applied on the targeting companies
    • Provide guidelines for collecting data
    • Analyze the software process improvement and capability according to the characteristics of the projects, organizations, and companies
  • Jan. 2007 - Oct. 2008, Power Consumption Estimation Framework for UML-based Embedded Software Models
    Software Engineering Laboratory, KAIST, Daejeon, Korea
    • Develop the power consumption estimation technique that can be used at the early stage of software development
    • Estimate the power consumption for model elements (e.g., function, component, etc.) of UML-based embedded software models
    • Develop the visualizing method for the obtained results
  • Mar. 2006 - Feb. 2008, Process Tailoring Techniques for Defense Software
    Agency for Defense Development, Daejeon, Korea
    • Develop the methods for making process knowledge as assets and categorizing those process knowledge
    • Develop the methods for constructing and managing process knowledge repository
    • Develop the systematic method of process tailoring for automation
  • Mar. 2005 - Jan. 2007, Embedded Software Design and Verification Techniques for Multiprocessor System-on-Chip (MPSoC)
    Ministry of Information and Communication, Seoul, Korea
    • Develop the modeling methodology for embedded software
    • Develop the static analysis and behavior simulation techniques for embedded software models
    • Develop the partitioning technique of embedded software models
    • Develop the verification and functional simulation techniques for partitioned embedded software models

Teaching and Mentoring

  • December 11, 2013, Invited Speaker, software engineering course, Korea University
    • Lecture on Making an evolvable software: Refactoring [ppt]
  • Spring 2007, Teaching Assistant, Advanced Software Engineering (CS650)

  • Fall 2011 and Spring 2012, Teaching Assistant, Principles of Software Engineering (SEP521), KAIST

  • Fall 2009, Teaching Assistant, Computer Science Project (CS408), KAIST
    • As a teaching assistant, I had the opportunity to mentor the senior undergraduate computer science major students for developing a software. In the fall course of 2009, Qualcomm donated $5,000 to this class, and mentors decided to give this prize money to the team that produced the best software. This prompted the students to work really hard on the projects. I took charge of two teams and met each team two times a week to help them select a software and the specific scope to be developed by considering the limited time and the number of men power. I also supported them to perform requirement analysis and software design such as drawing the architectural diagram, structural models, and behavioral models. For the final demo presentation, I helped them to make the clear and understandable presentation materials. Finally, one of the teams that I mentored was chosen as the best team, and later, based on the ideas, they founded a new start-up company, Weclay Inc. They launched the video/voice call application, Seed, which ranked #1 most downloaded apps from the App Store in 2012.
  • Spring 2008, Mentoring the high school student participating in the Intel International Science and Engineering Fair (ISEF), helping him win the Grand Award in the area of Computer Science
    • I had the privilege to mentor the high school student who had participated the ISEF 2008 with the project titled Real-Time Water Wave Simulation with Surface Advection. During the summer vacation, I helped him find the uniqueness in his ideas and led him to focus on developing it. At the competition, he won the prize, the best of category award in computer science for top first place winner, and received the invitation to the Nobel Prize ceremonies in Stockholm. I was delighted to see him succeed in the honorable conference as a student who is from outside the U.S. and a non-native English speaker.
  • Summer 2005, Lecturer, Lecture for college professors: Design and Implementation for High Quality Software, KAIST
    • The college professors had visited our department to learn new technologies and theories, and I had a chance to give the lectures on software engineering courses such as Object-Oriented design principles, Unified Modeling Language, refactoring, and design patterns.
  • Fall 2005 and Spring 2006, Teaching Assistant, Introduction to Programming (CS101) using JAVA, KAIST
    • I had the chance to take part in teaching Programming in Java for non-computer science major students. The undergraduate students in the first year at Korea Advanced Institute of Science and Technology (KAIST), where I studied for graduates, do not belong to any departments but they experience their desired major beforehand to decide the right major in the second year. The “Programming in Java” was one of the mandatory courses to be taken for all freshmen students, and it was a great challenge to teach the students who do not want to learn programming. By applying several different teaching methods, I found the following ways to teach students to engage in interest rather than boring them: (i) Students are able to better understand complex concepts in real-life examples. For example, I used the vehicle examples frequently to understand the object-oriented concept—classes, objects, encapsulation, inheritance, and polymorphism, which was very effective. (ii) Students are more receptive when explaining with graphical notations rather than codes, and I used the abstract and intuitive diagrams such as UML. (iii) Students learn more quickly by having hands-on experience in the classroom with a small example. Non-computer science major students often feel very difficult to install the JDK or Java IDE and sometimes abandon learning from the beginning. When showing students step-by-step examples and giving them the opportunity to practice on their own, I noticed that understanding increased and participation in the class became more active.