1 First Deliverable

For this deliverable make sure to describe to the reader the following including but not limited:

  1. The topic you selected (with a description of why you are interested in such a topic)

The topic I selected is “AI technology in second language learning.” This is also the research topic that I am doing in my other summer course this year. I am interested particularly in how the advancements of AI technology either negatively or positively affect people’s perception on traditional language learning.

There has already been a lot of evidence proving AI tools, if properly used, can be powerful and efficient tools for second language learning. However, as these tools becoming more and more powerful, there is an emerging debate on whether it is still a necessity for human to learn a second language. Thus, I am interested in whether there are some research about how do these AI tools either negatively or positively affect people’s perception on traditional language teaching and learning.

  1. The timespan (why)

I decided to look at the publications during the past 5 years (2018-2023) because this is the period of time when AI tools have been widely used and discussed in many different aspects of people’s daily lives. The incorporation of AI and education has also been an emerging trend over the past few years. More and more educators and other stakeholders start to discuss the situation since 2018.

  1. Type of publication (journal article, conference papers, book chapters) mentioning also why you selected this topic.

I chose to include both journal articles and conference papers because there are not enough journal articles to be researched on this emerging topic, and including conference papers can enlarge the scope to some extent.

getwd()
## [1] "/Users/aihe/Desktop/UPenn/[Summer 23] SSNA"
setwd("/Users/aihe/Desktop")

a <- read.csv("AI_SLL.csv")
authors<-as.data.frame(a[,2])
colnames(authors)<-"AUID"
dim(authors)
## [1] 179   1
library(splitstackshape)
a1<-cSplit(authors, splitCols = "AUID", sep = ";", direction = "wide", drop = FALSE)
## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE
a1<-a1[,-1]

mat <- as.matrix(a1)
dim(mat)
## [1] 179  41
a1<-mat

edgelist1<-matrix(NA, 1, 2)
for (i in 1:(ncol(a1)-1)) {
  edgelist11 <- cbind(a1[, i], c(a1[, -c(1:i)]))
  edgelist1 <- rbind(edgelist1,edgelist11)
  edgelist1<-edgelist1[!is.na(edgelist1[,2]),]
  edgelist1<-edgelist1[edgelist1[,2]!="",]
}
dim(edgelist1)
## [1] 2540    2
library(igraph)
## 
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## The following object is masked from 'package:base':
## 
##     union
#plot(graph.edgelist(edgelist1))

g <- graph.data.frame(edgelist1, directed = FALSE)
dim(g)
## NULL
g
## IGRAPH 00b6e0e UN-- 705 2540 -- 
## + attr: name (v/c)
## + edges from 00b6e0e (vertex names):
##  [1] 57223640712--14627618600 57753915200--57209094353 58288848400--58289105500
##  [4] 58061860400--58241995800 57301216200--57200151370 50262958000--7005495251 
##  [7] 57221813377--57063266900 57769896800--57054490100 57222072140--58221007600
## [10] 58205160300--57208907104 57191156064--55253499700 58158727000--55965860400
## [13] 57209902552--57822139600 57211158344--57188665642 57220870257--57200338646
## [16] 58127773400--57701960000 57222872644--57222869163 57225105038--13408877100
## [19] 14039593800--57207915402 58061860400--57204101861 57204435819--57393221400
## [22] 36798836700--37050694500 56069417000--58247760900 57815760300--26430103900
## + ... omitted several edges
x11()
plot(g)

1.1 After loading the file in R, answer the following questions

  1. What are the dimensions of the initial adjacency list matrix, and what those number represent (in actual English)?

The dimensions are [179, 41]. It means I have a total of 179 different papers, and at least one paper has 41 authors.

  1. After generating your edgelist, how many authors do you have in your resulting network?

There are 705 authors in my network.

  1. How many connections are there in such a network?

There are 2540 connections in the network.